Perpustakaan Swift Percuma untuk Menguraikan dan Memanipulasi Data HTML
Perpustakaan Swift Penguraian HTML/XML Sumber Terbuka yang Menyediakan API Swift Bersih untuk Menguraikan dan Menelusuri Dokumen HTML dan XML dengan Mudah.
Apakah Kanna?
Jika anda pernah membina aplikasi Swift yang perlu mengekstrak data daripada halaman web, menghurai respons API dalam XML, atau mengikis kandungan berstruktur, anda mungkin telah menghadapi cabaran bekerja dengan rentetan HTML dan XML mentah. Pustaka standard Swift tidak menyertakan penghurai asli yang ergonomik untuk format-format ini, di sinilah Kanna datang untuk menyelamatkan keadaan. Pada intinya, Kanna menyediakan API Swift yang bersih untuk menghurai dan menelusuri dokumen HTML dan XML. Di belakang tabir, ia menyerahkan kerja berat kepada libxml2, yang bermakna anda mendapat prestasi penghurai yang kukuh tanpa perlu melaksanakan semula peraturan tatabahasa yang kompleks secara sendiri.
Kanna menonjol dalam ekosistem Swift kerana kesederhanaannya dan kekuatannya. Dengan API yang intuitif, anda boleh menavigasi dan memanipulasi dokumen HTML/XML menggunakan kaedah pertanyaan yang biasa seperti XPath 1.0 dan pemilih CSS3. Sama ada anda membina penyerap web, mengekstrak data dari suapan RSS, atau memproses fail konfigurasi XML, Kanna menyediakan alat yang anda perlukan. Sokongan lintas platform adalah salah satu kualiti paling menarik Kanna. Ia berjalan pada macOS, iOS, tvOS, watchOS, dan bahkan Linux. XPath 1.0 dan pemilih CSS3 memberi anda dua cara kueri dokumen yang kuat dan standard industri. Sokongan berganda untuk kedua-dua pemilih CSS3 dan XPath 1.0 menjadikannya fleksibel untuk mengendalikan segala-galanya dari pengekstrakan HTML sederhana hingga pemprosesan XML berruang nama yang kompleks. Sama ada anda membina aplikasi iOS yang menggunakan suapan RSS, pelayan Vapor yang mengikis harga pesaing, atau alat baris perintah yang menukar data XML, Kanna memberi anda alat untuk menyelesaikan kerja dengan boleh dipercayai dan elegan.
Memulakan dengan Kanna
Cara yang disyorkan dan paling mudah untuk memasang Kanna ialah menggunakan CocoaPods. Sila gunakan perintah berikut untuk pemasangan yang lancar.
Pasang Kanna melalui Carthage
// add the following line to your Podfile:
use_frameworks!
pod 'Kanna', '~> 5.2.2'
// Then run:
$ pod install
Pasang Kanna melalui CocoaPods
// If you prefer Carthage, add this line to your Cartfile:
github "tid-kijyun/Kanna" ~> 5.2.2
Anda juga boleh memasangnya secara manual; muat turun fail pelepasan terkini secara langsung dari repositori GitHub.
Menganalisis Dokumen HTML melalui Swift
Perpustakaan sumber terbuka Kanna telah menyertakan sokongan untuk memuat dan mengurai dokumen HTML dalam aplikasi Swift. Kes penggunaan yang paling umum untuk mengurai HTML, sama ada dimuat turun dari web atau dibina secara programatik. Berikut ialah contoh mudah yang menunjukkan bagaimana pembangun perisian boleh menggunakan fungsi HTML yang menerima rentetan HTML mentah, mengekodnya dan mengembalikan objek dokumen yang mengandungi sifat seperti .title dan .body yang memberi mereka akses cepat kepada elemen umum tanpa memerlukan pemilih.
Bagaimana untuk Menghurai HTML menggunakan Pengekodan UTF-8 melalui Perpustakaan Swift?
import Kanna
// A sample HTML string representing a webpage
let htmlString = """
My Tech Blog
Selamat datang ke Swift Parsing
Kanna menjadikan penguraian HTML mudah dan elegan.
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")
}
Sokongan Pertanyaan Pemilih CSS3
Perpustakaan Kanna telah menyertakan sokongan penuh untuk Pemilih CSS3 yang membolehkan pembangun menggunakan sintaks CSS yang biasa untuk mencari elemen. Sokongan pemilih CSS Kanna membolehkan anda menggunakan sintaks pemilih yang sama seperti yang anda mungkin tulis dalam lembaran gaya atau querySelectorAll JavaScript. Ini menjadikannya sangat intuitif bagi sesiapa yang datang dari latar belakang pembangunan web. Contoh berikut menunjukkan bagaimana pengguna dapat memilih elemen HTML dan mengulangi pelbagai elemen dalam aplikasi Swift.
Bagaimana untuk Memilih Pelbagai Elemen HTML & Mengekstrak Teks daripadanya melalui Perpustakaan Swift?
import Kanna
let htmlString = """
-
Buku Swift
$39.99
-
Panduan Xcode
$24.99
-
Asas iOS
$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)")
}
}
Sokongan Pertanyaan XPath 1.0
Perpustakaan Kanna telah menyertakan sokongan untuk pertanyaan XPath 1.0 dalam aplikasi Swift. XPath menyediakan cara yang lebih kuat dan fleksibel untuk menavigasi elemen dan atribut dalam dokumen XML/HTML. Ia sangat berguna untuk struktur dokumen yang kompleks. Ekspresi XPath dapat menelusuri dokumen dengan cara yang tidak dapat dilakukan oleh pemilih CSS, seperti mencari elemen berdasarkan kedudukan mereka, hubungan ibu bapa‑anak, atau padanan teks yang kompleks. Ia tidak dapat dipisahkan daripada penguraian XML dan pengikisan HTML yang kompleks.
Penguraian dan Pengesahan XML melalui Swift
Selain parsing HTML asas, perpustakaan sumber terbuka Kanna menawarkan keupayaan pengendalian XML yang kukuh. Ini termasuk pengesahan struktur XML yang betul dan pengurusan atribut. Apabila bekerja dengan data berstruktur, anda memerlukan lebih daripada sekadar pengekstrakan elemen. Kanna menyediakan akses penuh kepada dokumen XML, termasuk komen, arahan pemprosesan, dan metadata dokumen.
Bagaimana untuk Melakukan Penghurai XML dalam Aplikasi Swift?
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")
}
}