Ilmainen Swift-kirjasto HTML-datan jäsentämiseen ja muokkaamiseen
Avoimen lähdekoodin HTML/XML-jäsentämiskirjasto Swiftille, joka tarjoaa selkeän Swift-API:n HTML- ja XML-dokumenttien jäsentämiseen ja läpikäymiseen helposti.
Mikä on Kanna?
Jos olet koskaan rakentanut Swift‑sovelluksen, jonka täytyy poimia tietoa verkkosivuilta, jäsentää API‑vastauksia XML‑muodossa tai kaapia rakenteellista sisältöä, olet todennäköisesti törmännyt haasteeseen, kun työskennellään raakojen HTML‑ ja XML‑merkkijonojen kanssa. Swiftin vakiokirjasto ei sisällä natiivia, ergonomista jäsentäjää näille formaateille, ja juuri tässä Kanna astuu kuvaan pelastamaan tilanteen. Kannan ydin tarjoaa selkeän Swift‑API:n HTML‑ ja XML‑dokumenttien jäsentämiseen ja läpikäymiseen. Sisäisesti se delegoi raskaan työn libxml2:lle, mikä tarkoittaa, että saat vankkaa jäsentämissuorituskykyä ilman, että joudut itse toteuttamaan monimutkaisia kielioppisääntöjä.
Kanna erottuu Swift-ekosysteemissä yksinkertaisuudellaan ja voimallaan. Intuitiivisen API:n avulla voit selata ja muokata HTML-/XML-dokumentteja käyttäen tuttuja kyselymenetelmiä, kuten XPath 1.0 ja CSS3-valitsimia. Olitpa sitten rakentamassa web-scraperia, poimimassa dataa RSS-syötteistä tai käsittelemässä XML-konfiguraatiotiedostoja, Kanna tarjoaa tarvitsemasi työkalut. Monialustatuki on yksi Kannan houkuttelevimmista ominaisuuksista. Se toimii macOS:lla, iOS:lla, tvOS:lla, watchOS:lla ja jopa Linuxilla. XPath 1.0 ja CSS3-valitsimet antavat kaksi tehokasta, alan standardia tapaa kysellä dokumentteja. Sen kaksoistuki sekä CSS3-valitsimille että XPath 1.0:lle tekee siitä riittävän joustavan käsittelemään kaikkea yksinkertaisesta HTML:n poiminnasta monimutkaiseen, nimiavaruuksia hyödyntävään XML-käsittelyyn. Olitpa sitten rakentamassa iOS-sovellusta, joka kuluttaa RSS-syötteen, Vapor-palvelinta, joka kerää kilpailijoiden hinnoittelua, tai komentorivityökalua, joka muuntaa XML-dataa, Kanna antaa sinulle työkalut työn suorittamiseen luotettavasti ja tyylikkäästi.
Kannan aloitus
Suositeltu ja helpoin tapa asentaa Kanna on käyttää CocoaPodsia. Käytä seuraavaa komentoa sujuvaan asennukseen.
Asenna Kanna Carthagen kautta
// add the following line to your Podfile:
use_frameworks!
pod 'Kanna', '~> 5.2.2'
// Then run:
$ pod install
Asenna Kanna CocoaPodsin kautta
// If you prefer Carthage, add this line to your Cartfile:
github "tid-kijyun/Kanna" ~> 5.2.2
Voit myös asentaa sen manuaalisesti; lataa uusimmat julkaisutiedostot suoraan GitHub-varastosta.
HTML-dokumenttien jäsentäminen Swiftin avulla
Avoimen lähdekoodin Kanna-kirjasto sisältää tuen HTML-dokumenttien lataamiseen ja jäsentämiseen Swift-sovelluksissa. Yleisin käyttötapaus on HTML:n jäsentäminen, olipa se ladattu verkosta tai luotu ohjelmallisesti. Tässä on yksinkertainen esimerkki, joka näyttää, miten ohjelmistokehittäjät voivat käyttää HTML-funktiota, joka hyväksyy raakaa HTML-merkkijonon, koodaa sen ja palauttaa dokumentti-olion, jossa on ominaisuuksia kuten .title ja .body, tarjoten nopean pääsyn yleisiin elementteihin ilman valitsimen tarvetta.
Kuinka jäsentää HTML UTF-8-enkoodauksella Swift‑kirjaston avulla?
import Kanna
// A sample HTML string representing a webpage
let htmlString = """
My Tech Blog
Tervetuloa Swift-parsaukseen
Kanna tekee HTML-jäsentämisestä helppoa ja eleganttia.
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")
}
CSS3-valitsimen kyselytuki
Kanna-kirjasto on sisällyttänyt täyden tuen CSS3-valitsimille, mikä mahdollistaa kehittäjien käyttää tuttua CSS-syntaksia elementtien löytämiseen. Kannan CSS-valitsintuki sallii sinun käyttää samaa valitsinsyntaksia, jonka kirjoittaisit tyylitiedostoon tai JavaScriptin querySelectorAll-funktioon. Tämä tekee siitä erittäin intuitiivisen kaikille, jotka tulevat web-kehityksen taustalta. Seuraava esimerkki näyttää, miten käyttäjät voivat valita HTML-elementtejä ja käydä läpi useita elementtejä Swift-sovelluksissa.
Kuinka valita useita HTML‑elementtejä ja poimia tekstiä niistä Swift‑kirjaston avulla?
import Kanna
let htmlString = """
-
Swift-kirja
$39.99
-
Xcode-opas
$24.99
-
iOS-perusteet
$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)")
}
}
XPath 1.0 -kyselytuki
Kanna-kirjasto sisältää tuen XPath 1.0 -kyselyille Swift-sovelluksissa. XPath tarjoaa voimakkaamman ja joustavamman tavan navigoida elementtien ja attribuuttien läpi XML/HTML-dokumentissa. Se on erityisen hyödyllinen monimutkaisille dokumenttirakenteille. XPath-lausekkeet voivat kulkea dokumenttien läpi tavoilla, joihin CSS-valitsimet eivät pysty, kuten löytämällä elementtejä niiden sijainnin, vanhempi-lapsi-suhteiden tai monimutkaisen tekstin vastaavuuden perusteella. Se on korvaamaton XML-parsinnassa ja monimutkaisessa HTML-keräilyssä.
XML-jäsentäminen ja validointi Swiftin avulla
Perus-HTML-parsinnan lisäksi avoimen lähdekoodin Kanna-kirjasto tarjoaa vankat XML-käsittelyominaisuudet. Tämä sisältää oikean XML-rakenteen validoinnin ja attribuuttien hallinnan. Kun työskennellään rakenteellisen datan parissa, tarvitaan muutakin kuin pelkkä elementtien poiminta. Kanna tarjoaa täyden XML-dokumentin pääsyn, mukaan lukien kommentit, prosessointikomennot ja dokumentin metatiedot.
Kuinka suorittaa XML‑jäsentäminen Swift‑sovelluksissa?
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")
}
}