Kanna(鉋) is an XML/HTML parser for cross-platform(macOS, iOS, tvOS, watchOS and Linux!).
It was inspired by Nokogiri(鋸).
ℹ️ If you are using Swift 6, please use Kanna 6.0.0 or later.
ℹ️ The same applies if you set Strict Concurrency Check to Targeted or higher.
Add the following to your Podfile:
use_frameworks!
pod 'Kanna', '~> 5.2.2'
Add the following to your Cartfile:
github "tid-kijyun/Kanna" ~> 5.2.2
For xcode 11.3 and earlier, the following settings are required.
$(SDKROOT)/usr/include/libxml2 to the "header search paths" field// macOS: For xcode 11.3 and earlier, the following settings are required.
$ brew install libxml2
$ brew link --force libxml2
// Linux(Ubuntu):
$ sudo apt-get install libxml2-dev
Package.swift:// swift-tools-version:5.0
import PackageDescription
let package = Package(
name: "YourProject",
dependencies: [
.package(url: "https://github.com/tid-kijyun/Kanna.git", from: "5.2.2"),
],
targets: [
.target(
name: "YourTarget",
dependencies: ["Kanna"]),
]
)
$ swift build
Note: When a build error occurs, please try run the following command:
// Linux(Ubuntu)
$ sudo apt-get install pkg-config
$(SDKROOT)/usr/include/libxml2 to the Search Paths > Header Search Paths field$(SRCROOT)/Modules to the Swift Compiler - Search Paths > Import Paths fieldimport Kanna
let html = "<html>...</html>"
if let doc = try? HTML(html: html, encoding: .utf8) {
print(doc.title)
// Search for nodes by CSS
for link in doc.css("a, link") {
print(link.text)
print(link["href"])
}
// Search for nodes by XPath
for link in doc.xpath("//a | //link") {
print(link.text)
print(link["href"])
}
}
let xml = "..."
if let doc = try? Kanna.XML(xml: xml, encoding: .utf8) {
let namespaces = [
"o": "urn:schemas-microsoft-com:office:office",
"ss": "urn:schemas-microsoft-com:office:spreadsheet"
]
if let author = doc.at_xpath("//o:Author", namespaces: namespaces) {
print(author.text)
}
}
If you like Kanna, please donate via GitHub sponsors or PayPal.
It is used to improve and maintain the library.
The MIT License. See the LICENSE file for more information.
1,072 followers · starred Jan 2025
761 followers · starred Dec 2016
1,306 followers · starred Apr 2020
137 followers · starred Nov 2016
Kanna(鉋) is an XML/HTML parser for cross-platform(macOS, iOS, tvOS, watchOS and Linux!).
It was inspired by Nokogiri(鋸).
ℹ️ If you are using Swift 6, please use Kanna 6.0.0 or later.
ℹ️ The same applies if you set Strict Concurrency Check to Targeted or higher.
Add the following to your Podfile:
use_frameworks!
pod 'Kanna', '~> 5.2.2'
Add the following to your Cartfile:
github "tid-kijyun/Kanna" ~> 5.2.2
For xcode 11.3 and earlier, the following settings are required.
$(SDKROOT)/usr/include/libxml2 to the "header search paths" field// macOS: For xcode 11.3 and earlier, the following settings are required.
$ brew install libxml2
$ brew link --force libxml2
// Linux(Ubuntu):
$ sudo apt-get install libxml2-dev
Package.swift:// swift-tools-version:5.0
import PackageDescription
let package = Package(
name: "YourProject",
dependencies: [
.package(url: "https://github.com/tid-kijyun/Kanna.git", from: "5.2.2"),
],
targets: [
.target(
name: "YourTarget",
dependencies: ["Kanna"]),
]
)
$ swift build
Note: When a build error occurs, please try run the following command:
// Linux(Ubuntu)
$ sudo apt-get install pkg-config
$(SDKROOT)/usr/include/libxml2 to the Search Paths > Header Search Paths field$(SRCROOT)/Modules to the Swift Compiler - Search Paths > Import Paths fieldimport Kanna
let html = "<html>...</html>"
if let doc = try? HTML(html: html, encoding: .utf8) {
print(doc.title)
// Search for nodes by CSS
for link in doc.css("a, link") {
print(link.text)
print(link["href"])
}
// Search for nodes by XPath
for link in doc.xpath("//a | //link") {
print(link.text)
print(link["href"])
}
}
let xml = "..."
if let doc = try? Kanna.XML(xml: xml, encoding: .utf8) {
let namespaces = [
"o": "urn:schemas-microsoft-com:office:office",
"ss": "urn:schemas-microsoft-com:office:spreadsheet"
]
if let author = doc.at_xpath("//o:Author", namespaces: namespaces) {
print(author.text)
}
}
If you like Kanna, please donate via GitHub sponsors or PayPal.
It is used to improve and maintain the library.
The MIT License. See the LICENSE file for more information.
1,072 followers · starred Jan 2025
761 followers · starred Dec 2016
1,306 followers · starred Apr 2020
137 followers · starred Nov 2016