Gratis Swift-bibliotheek om HTML-gegevens te parseren en manipuleren
Open source HTML/XML-parser Swift-bibliotheek die een nette Swift-API biedt voor het parseren en doorlopen van HTML- en XML-documenten met gemak.
Wat is Kanna?
Als je ooit een Swift‑applicatie hebt gebouwd die gegevens moet extraheren van webpagina's, API‑reacties in XML moet parseren of gestructureerde inhoud moet scrapen, ben je waarschijnlijk de uitdaging tegengekomen om met ruwe HTML‑ en XML‑strings te werken. De standaardbibliotheek van Swift bevat geen native, ergonomische parser voor deze formaten, en daar komt Kanna om de dag te redden. In de kern biedt Kanna een nette Swift‑API voor het parseren en doorlopen van HTML‑ en XML‑documenten. Intern delegeert het het zware werk aan libxml2, wat betekent dat je een robuuste parse‑prestaties krijgt zonder zelf complexe grammaticaregels opnieuw te implementeren.
Kanna valt op in het Swift-ecosysteem vanwege zijn eenvoud en kracht. Met zijn intuïtieve API kun je HTML/XML‑documenten navigeren en manipuleren met bekende query‑methoden zoals XPath 1.0 en CSS3‑selectoren. Of je nu een web‑scraper bouwt, gegevens uit RSS‑feeds haalt of XML‑configuratiebestanden verwerkt, Kanna biedt de tools die je nodig hebt. Cross‑platformondersteuning is een van Kanna's meest aantrekkelijke eigenschappen. Het draait op macOS, iOS, tvOS, watchOS en zelfs Linux. XPath 1.0 en CSS3‑selectoren geven je twee krachtige, industriestandaard manieren om documenten te doorzoeken. De dubbele ondersteuning voor zowel CSS3‑selectoren als XPath 1.0 maakt het flexibel genoeg om alles aan te kunnen, van eenvoudige HTML‑extractie tot complexe, met namespaces werkende XML‑verwerking. Of je nu een iOS‑app bouwt die een RSS‑feed consumeert, een Vapor‑server die concurrentprijzen scrapt, of een command‑line‑tool die XML‑data transformeert, Kanna geeft je de middelen om de klus betrouwbaar en elegant te klaren.
Aan de slag met Kanna
De aanbevolen en gemakkelijkste manier om Kanna te installeren is via CocoaPods. Gebruik alstublieft het volgende commando voor een soepele installatie.
Installeer Kanna via Carthage
// add the following line to your Podfile:
use_frameworks!
pod 'Kanna', '~> 5.2.2'
// Then run:
$ pod install
Installeer Kanna via CocoaPods
// If you prefer Carthage, add this line to your Cartfile:
github "tid-kijyun/Kanna" ~> 5.2.2
U kunt het ook handmatig installeren; download de nieuwste release‑bestanden rechtstreeks van de GitHub repository.
HTML-documenten parseren via Swift
De open‑source Kanna‑bibliotheek bevat ondersteuning voor het laden en parseren van HTML‑documenten binnen Swift‑applicaties. Het meest voorkomende gebruiksscenario voor het parseren van HTML, of het nu van het web wordt gedownload of programmatisch wordt opgebouwd. Hier is een eenvoudig voorbeeld dat laat zien hoe software‑ontwikkelaars de HTML‑functie kunnen gebruiken die een ruwe HTML‑string accepteert, deze codeert en een documentobject retourneert met eigenschappen zoals .title en .body, waarmee ze snel toegang krijgen tot veelvoorkomende elementen zonder een selector te hoeven gebruiken.
Hoe HTML parseren met UTF-8-codering via Swift-bibliotheek?
import Kanna
// A sample HTML string representing a webpage
let htmlString = """
My Tech Blog
Welkom bij Swift Parsing
Kanna maakt HTML‑parsen eenvoudig en 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")
}
Ondersteuning voor CSS3-selectors
De Kanna-bibliotheek heeft volledige ondersteuning voor CSS3-selectors toegevoegd, waardoor ontwikkelaars vertrouwde CSS-syntaxis kunnen gebruiken om elementen te vinden. De CSS-selectorondersteuning van Kanna stelt je in staat dezelfde selector-syntaxis te gebruiken die je in een stylesheet of JavaScript's querySelectorAll zou schrijven. Dit maakt het zeer intuïtief voor iedereen met een achtergrond in webontwikkeling. Het volgende voorbeeld laat zien hoe gebruikers HTML-elementen kunnen selecteren en over meerdere elementen kunnen itereren binnen Swift-toepassingen.
Hoe meerdere HTML-elementen selecteren & tekst eruit extraheren via Swift-bibliotheek?
import Kanna
let htmlString = """
-
Swift-boek
$39.99
-
Xcode-gids
$24.99
-
iOS Fundamentals
$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)")
}
}
Ondersteuning voor XPath 1.0-query's
De Kanna-bibliotheek heeft ondersteuning voor XPath 1.0-query's in Swift-apps toegevoegd. XPath biedt een krachtigere en flexibelere manier om door elementen en attributen in een XML/HTML-document te navigeren. Het is bijzonder nuttig voor complexe documentstructuren. XPath-expressies kunnen documenten doorlopen op manieren die CSS-selectors niet kunnen, zoals het vinden van elementen op basis van hun positie, ouder‑kindrelaties of complexe tekstmatching. Het is onmisbaar voor XML-parsing en complexe HTML-scraping.
XML-parsen en validatie via Swift
Naast eenvoudige HTML-parsing biedt de open source Kanna-bibliotheek robuuste XML-verwerkingsmogelijkheden. Dit omvat correcte validatie van XML-structuren en attribuutbeheer. Bij het werken met gestructureerde gegevens heb je meer nodig dan alleen elementextractie. Kanna biedt volledige toegang tot XML-documenten, inclusief commentaar, verwerkingsinstructies en documentmetadata.
Hoe XML-parsing uitvoeren binnen Swift-apps?
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")
}
}