Kanna(鉋) is an XML/HTML parser for MacOSX/iOS. (formerly Swift-HTML-Parser)
It was inspired by Nokogiri(鋸).
- XPath 1.0 support for document searching
- CSS3 selector support for document searching
- Support for namespace
- Comprehensive test suite
#####Cocoapods
Adding it to your Podfile
:
use_frameworks!
pod 'Kanna', '~> 1.0.0'
#####Carthage
Adding it to your Cartfile
:
github "tid-kijyun/Kanna" ~> 1.0.0
#####Munually
- Add files to your project:
Kanna.swift
CSS.swift
libxmlHTMLDocument.swift
libxmlHTMLNode.swift
libxmlParserOption.swift - Copy folder to your project:
Modules - In the project settings add
$(SRCROOT)/YOUR_PROJECT/Modules
to the "Swift Compiler - Search Paths > Import Paths" field - In the project settings add
$(SDKROOT)/usr/include/libxml2
to the "header search paths" field - In the project settings add
-lxml2
to the "Linking > Other Linker Flags" field
Note: For manually, this library don't need import and namespace in your code.
#####Cocoapods
Adding it to your Podfile
:
use_frameworks!
pod 'Kanna', '~> 0.1.5'
#####Carthage
Adding it to your Cartfile
:
github "tid-kijyun/Kanna" ~> 0.1.5
import Kanna
let html = "<html>...</html>"
if let doc = Kanna.HTML(html: html, encoding: NSUTF8StringEncoding) {
println(doc.title)
// Search for nodes by CSS
for link in doc.css("a, link") {
println(link.text)
println(link["href"])
}
// Search for nodes by XPath
for link in doc.xpath("//a | //link") {
println(link.text)
println(link["href"])
}
}
let xml = "..."
if let doc = Kanna.XML(xml: xml, encoding: NSUTF8StringEncoding) {
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) {
println(author.text)
}
}
// Swift-HTML-Parser
var err: NSError?
var parser = HTMLParser(html: html, error: &err)
// New: Kanna
if let doc = Kanna.HTML(html: html, encoding: NSUTF8StringEncoding) {
}
// Swift-HTML-Parser
if let nodes = parser.body?.findChildTags("div") {
for node in nodes {
println(node.contents)
}
}
// NEW: Kanna
for node in doc.css("div") {
println(doc.text)
}
// Swift-HTML-Parser
if let nodes = parser.body?.xpath("//div") {
for node in nodes {
println(node.contents)
}
}
// New: Kanna
for node in doc.xpath("//div") {
println(node.text)
}
// Swift-HTML-Parser
if let nodes = parser.body?.css("li:nth-child(2n)") {
for node in nodes {
println(node.contents)
}
}
// New: Kanna
for node in doc.css("li:nth-child(2n)") {
print(node.text)
}
// Swift-HTML-Parser
if let node = parser.body?.findChildTag("div") {
println(node.contents)
}
// New: Kanna
if let node = doc.at_css("div") {
println(node.text)
}
// Swift-HTML-Parser
node.contents
// New: Kanna
node.text
// Swift-HTML-Parser
node.getAttributeNamed("href")
// New: Kanna
node["href"]
// Swift-HTML-Parser
node.rawContents
// New: Kanna
node.innerHTML
The MIT License. See the LICENSE file for more infomation.