Kostenlose Swift-Bibliothek zum Parsen und Manipulieren von HTML-Daten
Open-Source HTML/XML-Parsing Swift-Bibliothek, die eine saubere Swift-API zum einfachen Parsen und Durchlaufen von HTML- und XML-Dokumenten bereitstellt.
Was ist Kanna?
Wenn Sie jemals eine Swift-Anwendung entwickelt haben, die Daten von Webseiten extrahieren, API-Antworten in XML parsen oder strukturierte Inhalte scrapen muss, sind Sie wahrscheinlich auf die Herausforderung gestoßen, mit rohen HTML- und XML-Strings zu arbeiten. Die Standardbibliothek von Swift enthält keinen nativen, ergonomischen Parser für diese Formate, hier kommt Kanna ins Spiel, um zu helfen. Im Kern bietet Kanna eine saubere Swift-API zum Parsen und Durchlaufen von HTML- und XML-Dokumenten. Im Hintergrund delegiert es die schwere Arbeit an libxml2, was bedeutet, dass Sie eine rock-solid Parsing‑Leistung erhalten, ohne komplexe Grammatikregeln selbst neu implementieren zu müssen.
Kanna zeichnet sich im Swift-Ökosystem durch seine Einfachheit und Leistungsfähigkeit aus. Mit seiner intuitiven API können Sie HTML/XML‑Dokumente mithilfe bekannter Abfragemethoden wie XPath 1.0 und CSS3‑Selektoren navigieren und manipulieren. Egal, ob Sie einen Web‑Scraper bauen, Daten aus RSS‑Feeds extrahieren oder XML‑Konfigurationsdateien verarbeiten – Kanna stellt die Werkzeuge bereit, die Sie benötigen. Plattformübergreifende Unterstützung ist eine der attraktivsten Eigenschaften von Kanna. Es läuft auf macOS, iOS, tvOS, watchOS und sogar Linux. XPath 1.0 und CSS3‑Selektoren bieten Ihnen zwei leistungsstarke, branchenübliche Möglichkeiten, Dokumente abzufragen. Die doppelte Unterstützung sowohl für CSS3‑Selektoren als auch für XPath 1.0 macht es flexibel genug, um alles von einfacher HTML‑Extraktion bis hin zu komplexer, namensraumbezogener XML‑Verarbeitung zu bewältigen. Ob Sie eine iOS‑App entwickeln, die einen RSS‑Feed konsumiert, einen Vapor‑Server, der Konkurrenzpreise scrapt, oder ein Kommandozeilen‑Tool, das XML‑Daten transformiert – Kanna liefert Ihnen die Werkzeuge, um die Aufgabe zuverlässig und elegant zu erledigen.
Erste Schritte mit Kanna
Die empfohlene und einfachste Methode, Kanna zu installieren, ist die Verwendung von CocoaPods. Bitte verwenden Sie den folgenden Befehl für eine reibungslose Installation.
Kanna via Carthage installieren
// add the following line to your Podfile:
use_frameworks!
pod 'Kanna', '~> 5.2.2'
// Then run:
$ pod install
Kanna via CocoaPods installieren
// If you prefer Carthage, add this line to your Cartfile:
github "tid-kijyun/Kanna" ~> 5.2.2
Sie können es auch manuell installieren; laden Sie die neuesten Release-Dateien direkt aus dem GitHub-Repository herunter.
HTML-Dokumente mit Swift parsen
Die Open‑Source‑Bibliothek Kanna enthält Unterstützung zum Laden und Parsen von HTML‑Dokumenten in Swift‑Anwendungen. Der häufigste Anwendungsfall ist das Parsen von HTML, egal ob es aus dem Web heruntergeladen oder programmgesteuert erstellt wurde. Hier ist ein einfaches Beispiel, das zeigt, wie Entwickler die HTML‑Funktion nutzen können, die einen rohen HTML‑String akzeptiert, ihn kodiert und ein Dokumentobjekt zurückgibt, das Eigenschaften wie .title und .body enthält und schnellen Zugriff auf gängige Elemente ermöglicht, ohne einen Selektor zu benötigen.
Wie parse ich HTML mit UTF-8-Kodierung über die Swift-Bibliothek?
import Kanna
// A sample HTML string representing a webpage
let htmlString = """
My Tech Blog
Willkommen bei Swift Parsing
Kanna macht das HTML‑Parsing einfach und 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")
}
Unterstützung für CSS3-Selektorabfragen
Die Kanna-Bibliothek hat vollständige Unterstützung für CSS3-Selektoren integriert, sodass Entwickler die vertraute CSS-Syntax verwenden können, um Elemente zu finden. Die CSS-Selektorunterstützung von Kanna ermöglicht es Ihnen, dieselbe Selektorsyntax zu verwenden, die Sie in einem Stylesheet oder in JavaScripts querySelectorAll schreiben würden. Das macht es sehr intuitiv für alle, die aus einem Webentwicklungs‑Hintergrund kommen. Das folgende Beispiel zeigt, wie Benutzer HTML-Elemente auswählen und über mehrere Elemente in Swift‑Anwendungen iterieren können.
Wie wählt man mehrere HTML-Elemente aus und extrahiert den Text daraus über die Swift-Bibliothek?
import Kanna
let htmlString = """
-
Swift Buch
$39.99
-
Xcode Leitfaden
$24.99
-
iOS Grundlagen
$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)")
}
}
Unterstützung für XPath 1.0-Abfragen
Die Kanna-Bibliothek enthält Unterstützung für XPath‑1.0‑Abfragen in Swift‑Apps. XPath bietet eine leistungsfähigere und flexiblere Möglichkeit, durch Elemente und Attribute in einem XML/HTML‑Dokument zu navigieren. Es ist besonders nützlich für komplexe Dokumentenstrukturen. XPath‑Ausdrücke können Dokumente auf Arten durchlaufen, die CSS‑Selektoren nicht können, z. B. das Finden von Elementen basierend auf ihrer Position, Eltern‑Kind‑Beziehungen oder komplexen Textübereinstimmungen. Es ist unverzichtbar für XML‑Parsing und komplexes HTML‑Scraping.
XML-Parsing und -Validierung mit Swift
Über das reine HTML-Parsing hinaus bietet die Open‑Source‑Bibliothek Kanna robuste XML‑Verarbeitungsfunktionen. Dazu gehören die Validierung der XML‑Struktur und die Verwaltung von Attributen. Beim Arbeiten mit strukturierten Daten benötigen Sie mehr als nur das Extrahieren von Elementen. Kanna ermöglicht den vollständigen Zugriff auf XML‑Dokumente, einschließlich Kommentaren, Verarbeitungsanweisungen und Dokumenten‑Metadaten.
Wie führt man XML-Parsing in Swift-Apps durch?
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")
}
}