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

Gratis Swift-bibliotek for å parse og manipulere HTML-data

Åpen kildekode HTML/XML-parsings Swift-bibliotek som gir et rent Swift-API for enkel parsing og traversering av HTML- og XML-dokumenter.

Hva er Kanna?

Hvis du noen gang har bygget en Swift-applikasjon som trenger å hente data fra nettsider, parse API-responser i XML, eller skrape strukturert innhold, har du sannsynligvis støtt på utfordringen med å jobbe med rå HTML- og XML-strenger. Swifts standardbibliotek inneholder ikke en innebygd, ergonomisk parser for disse formatene, og det er her Kanna kommer inn for å redde dagen. I kjernen gir Kanna et rent Swift-API for parsing og traversering av HTML- og XML-dokumenter. Under panseret delegere den det tunge løftet til libxml2, noe som betyr at du får en solid parsing‑ytelse uten å måtte implementere komplekse grammatikkregler selv.

Kanna skiller seg ut i Swift-økosystemet for sin enkelhet og kraft. Med sitt intuitive API kan du navigere og manipulere HTML/XML-dokumenter ved hjelp av kjente spørringsmetoder som XPath 1.0 og CSS3-selectors. Enten du bygger en webskraper, henter data fra RSS-feeder, eller behandler XML-konfigurasjonsfiler, gir Kanna verktøyene du trenger. Støtte på tvers av plattformer er en av Kanna sine mest attraktive egenskaper. Den kjører på macOS, iOS, tvOS, watchOS og til og med Linux. XPath 1.0 og CSS3-selectors gir deg to kraftige, industristandard måter å spørre dokumenter på. Dens doble støtte for både CSS3-selectors og XPath 1.0 gjør den fleksibel nok til å håndtere alt fra enkel HTML-uttrekk til kompleks, navneromsbasert XML-behandling. Enten du bygger en iOS-app som konsumerer en RSS-feed, en Vapor-server som skraper konkurrenters priser, eller et kommandolinjeverktøy som transformerer XML-data, gir Kanna deg verktøyene for å få jobben gjort pålitelig og elegant.

Previous Next

Kom i gang med Kanna

Den anbefalte og enkleste måten å installere Kanna på er å bruke CocoaPods. Vennligst bruk følgende kommando for en smidig installasjon.

Installer Kanna via Carthage

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

// Then run:
$ pod install

Installer Kanna via CocoaPods


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

Du kan også installere den manuelt; last ned de nyeste utgivelsesfilene direkte fra GitHub-repoet.

Parsing av HTML-dokumenter via Swift

Det åpne kildekodebiblioteket Kanna har inkludert støtte for lasting og parsing av HTML-dokumenter i Swift‑applikasjoner. Det vanligste bruksområdet for dette er parsing av HTML, enten den er lastet ned fra nettet eller konstruert programmatisk. Her er et enkelt eksempel som viser hvordan programvareutviklere kan bruke HTML‑funksjonen som godtar en rå HTML‑streng, koder den og returnerer et dokumentobjekt som inneholder egenskaper som .title og .body, som gir rask tilgang til vanlige elementer uten å trenge en selector.

Hvordan parse HTML ved bruk av UTF-8-koding via Swift-biblioteket?

 import Kanna

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

  
    My Tech Blog
  
  
    

Velkommen til Swift Parsing

Kanna gjør HTML‑parsing enkelt og 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øtte for CSS3-velgerforespørsler

Kanna-biblioteket har inkludert full støtte for CSS3-selectorer som gjør det mulig for utviklere å bruke kjent CSS-syntaks for å finne elementer. Kanna sin CSS-selector-støtte lar deg bruke samme selector-syntaks som du kanskje ville skrevet i et stilark eller i JavaScripts querySelectorAll. Dette gjør det svært intuitivt for alle som kommer fra en webutviklingsbakgrunn. Følgende eksempel viser hvordan brukere kan velge HTML-elementer og iterere over flere elementer i Swift-applikasjoner.

Hvordan velge flere HTML-elementer og hente tekst fra dem via Swift-biblioteket?

import Kanna

let htmlString = """


  
  • Swift-bok $39.99
  • Xcode-veiledning $24.99
  • iOS Grunnleggende $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øtte for XPath 1.0-forespørsler

Kanna-biblioteket har inkludert støtte for XPath 1.0-spørringer i Swift-apper. XPath gir en kraftigere og mer fleksibel måte å navigere gjennom elementer og attributter i et XML/HTML-dokument. Det er spesielt nyttig for komplekse dokumentstrukturer. XPath-uttrykk kan traversere dokumenter på måter som CSS-selectorer ikke kan, for eksempel ved å finne elementer basert på deres posisjon, foreldre-barn-relasjoner eller kompleks tekstmatching. Det er uunnværlig for XML-parsing og kompleks HTML-skrabning.

XML-parsing og validering via Swift

Utover grunnleggende HTML-parsing tilbyr det åpne kildekodebiblioteket Kanna robuste XML-behandlingsmuligheter. Dette inkluderer korrekt validering av XML-struktur og attributthåndtering. Når du arbeider med strukturerte data, trenger du mer enn bare elementekstraksjon. Kanna gir full tilgang til XML-dokumenter, inkludert kommentarer, prosesseringsinstruksjoner og dokumentmetadata.

Hvordan utføre XML-parsing i Swift-apper?

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")
    }
}


 Norsk