1. Produkter
  2.   HTML
  3.   Swift
  4.   Kanna
 
  

Gratis Swift‑bibliotek för att parsra och manipulera HTML‑data

Öppen källkod HTML/XML‑parsning Swift‑bibliotek som erbjuder ett rent Swift‑API för att enkelt parsra och traversera HTML‑ och XML‑dokument.

Vad är Kanna?

Om du någonsin har byggt en Swift-applikation som behöver extrahera data från webbsidor, parsa API-svar i XML, eller skrapa strukturerat innehåll, har du sannolikt stött på utmaningen att arbeta med råa HTML- och XML-strängar. Swifts standardbibliotek innehåller ingen inbyggd, ergonomisk parser för dessa format, vilket är där Kanna kommer in för att rädda dagen. I grunden erbjuder Kanna ett rent Swift-API för att parsa och traversera HTML- och XML-dokument. Under huven delegerar den det tunga arbetet till libxml2, vilket betyder att du får en kristallklar parsingsprestanda utan att behöva implementera komplexa grammatikregler själv.

Kanna utmärker sig i Swift-ekosystemet för sin enkelhet och kraft. Med sitt intuitiva API kan du navigera och manipulera HTML/XML-dokument med välbekanta frågemetoder som XPath 1.0 och CSS3-väljare. Oavsett om du bygger en webbsökare, extraherar data från RSS-flöden eller bearbetar XML-konfigurationsfiler, tillhandahåller Kanna verktygen du behöver. Stödet för flera plattformar är en av Kannas mest attraktiva egenskaper. Det körs på macOS, iOS, tvOS, watchOS och till och med Linux. XPath 1.0 och CSS3-väljare ger dig två kraftfulla, branschstandardmetoder för att fråga dokument. Dess dubbla stöd för både CSS3-väljare och XPath 1.0 gör det flexibelt nog att hantera allt från enkel HTML-extraktion till komplex, namnrymdsbaserad XML-bearbetning. Oavsett om du bygger en iOS-app som konsumerar ett RSS-flöde, en Vapor-server som skrapar konkurrenters priser eller ett kommandoradsverktyg som omvandlar XML-data, ger Kanna dig verktygen för att utföra jobbet på ett pålitligt och elegant sätt.

Previous Next

Kom igång med Kanna

Det rekommenderade och enklaste sättet att installera Kanna är att använda CocoaPods. Använd följande kommando för en smidig installation.

Installera Kanna via Carthage

// add the following line to your Podfile:
use_frameworks! 
pod 'Kanna', '~> 5.2.2'

// Then run:
$ pod install

Installera Kanna via CocoaPods


// If you prefer Carthage, add this line to your Cartfile:
github "tid-kijyun/Kanna" ~> 5.2.2

Du kan också installera det manuellt; ladda ner de senaste release-filerna direkt från GitHub-arkivet.

Analysera HTML-dokument via Swift

Det öppna källkods‑biblioteket Kanna har inkluderat stöd för att ladda och parsa HTML‑dokument i Swift‑applikationer. Det vanligaste användningsfallet för detta är att parsa HTML, oavsett om den hämtas från webben eller byggs programmässigt. Här är ett enkelt exempel som visar hur mjukvaruutvecklare kan använda HTML‑funktionen som accepterar en rå HTML‑sträng, kodar den och returnerar ett dokumentobjekt som innehåller egenskaper som .title och .body, vilket ger snabb åtkomst till vanliga element utan att behöva en selector.

Hur parsar man HTML med UTF-8-kodning via Swift-biblioteket?

 import Kanna

// A sample HTML string representing a webpage
let htmlString = """

  
    My Tech Blog
  
  
    

Välkommen till Swift Parsing

Kanna gör HTML‑parsing enkel och elegant.

View on GitHub """ // Parse the HTML string using UTF-8 encoding if let doc = try? HTML(html: htmlString, encoding: .utf8) { // Access the document title directly via a convenience property print(doc.title ?? "No title found") // Output: My Tech Blog // Access the full body text print(doc.body?.text ?? "No body") }

Stöd för CSS3-väljarefrågor

Kanna-biblioteket har inkluderat fullt stöd för CSS3-selectorer, vilket gör att utvecklare kan använda bekant CSS-syntax för att hitta element. Kannas stöd för CSS-selectorer låter dig använda samma selector-syntax som du skulle skriva i en stilfil eller i JavaScripts querySelectorAll. Detta gör det mycket intuitivt för alla som kommer från en webbutvecklingsbakgrund. Följande exempel visar hur användare kan välja HTML-element och iterera över flera element i Swift-applikationer.

Hur väljer man flera HTML-element & extraherar text från dem via Swift-biblioteket?

import Kanna

let htmlString = """


  
  • Swift-bok $39.99
  • Xcode-guide $24.99
  • iOS-grunder $49.99
""" if let doc = try? HTML(html: htmlString, encoding: .utf8) { // Select all elements with class "product" inside a "ul" for product in doc.css("ul.product-list li.product") { // Extract text from nested span elements using child selectors let name = product.css("span.name").first?.text ?? "Unknown" let price = product.css("span.price").first?.text ?? "N/A" // Access HTML attributes using subscript notation let productId = product["data-id"] ?? "No ID" print("[\(productId)] \(name) — \(price)") } }

Stöd för XPath 1.0-frågor

Kanna-biblioteket har inkluderat stöd för XPath 1.0-frågor i Swift-appar. XPath ger ett kraftfullare och mer flexibelt sätt att navigera genom element och attribut i ett XML/HTML-dokument. Det är särskilt användbart för komplexa dokumentstrukturer. XPath-uttryck kan traversera dokument på sätt som CSS-selectorer inte kan, till exempel att hitta element baserat på deras position, förälder‑barn-relationer eller komplex textmatchning. Det är oumbärligt för XML‑parsing och komplex HTML-sökning.

XML-analys och validering via Swift

Utöver grundläggande HTML‑parsing erbjuder det öppna Kanna‑biblioteket robusta XML‑hanteringsfunktioner. Detta inkluderar korrekt validering av XML‑struktur och attributhantering. När du arbetar med strukturerad data behöver du mer än bara elementextraktion. Kanna ger full åtkomst till XML‑dokument, inklusive kommentarer, processinstruktioner och dokumentmetadata.

Hur utför man XML-parsing i Swift-appar?

import Kanna

let xmlString = """


  
    Swift Developer News
    
      Kanna 6.0 Released with Swift 6 Support
      Alex Johnson
      Mon, 26 Jun 2024 00:00:00 GMT
    
    
      New Features in Swift 5.10
      Maria Garcia
      Tue, 15 Apr 2024 00:00:00 GMT
    
  

"""

if let doc = try? Kanna.XML(xml: xmlString, encoding: .utf8) {
    
    // Define a namespace mapping: prefix -> URI
    // The prefix you use here ("dc") can be anything; it maps to the namespace URI
    let namespaces = [
        "dc": "http://purl.org/dc/elements/1.1/"
    ]
    
    // Query elements in the "dc" namespace using the prefix
    for item in doc.xpath("//item", namespaces: namespaces) {
        let title = item.at_xpath("title")?.text ?? "No title"
        let creator = item.at_xpath("dc:creator", namespaces: namespaces)?.text ?? "Unknown"
        let pubDate = item.at_xpath("pubDate")?.text ?? "No date"
        
        print("Title: \(title)")
        print("Author: \(creator)")
        print("Published: \(pubDate)\n")
    }
}


 Svenska