Kanna(鉋)

Kanna(鉋) is an XML/HTML parser for cross-platform(macOS, iOS, tvOS, watchOS and Linux!).

It was inspired by Nokogiri(鋸).

625332134c6f4d4600884b99daebf603.png625332134c6f4d4600884b99daebf603.png625332134c6f4d4600884b99daebf603.png625332134c6f4d4600884b99daebf603.png625332134c6f4d4600884b99daebf603.png625332134c6f4d4600884b99daebf603.png

Features:

XPath 1.0 support for document searching

CSS3 selector support for document searching

Support for namespaces

Comprehensive test suite

Installation:

Swift 4

CocoaPods

⚠️ CocoaPods (1.1.0 or later) is required.

Adding it to your Podfile:

use_frameworks!

pod 'Kanna', '~> 4.0.0'

Carthage

Adding it to your Cartfile:

github "tid-kijyun/Kanna" ~> 4.0.0

In the project settings add $(SDKROOT)/usr/include/libxml2 to the "header search paths" field

Swift Package Manager

Installing libxml2 to your computer:

// macOS

$ brew install libxml2

$ brew link --force libxml2

// Linux(Ubuntu)

$ sudo apt-get install libxml2-dev

Adding it to your Package.swift:

// swift-tools-version:4.0

import PackageDescription

let package = Package(

name: "YourProject",

dependencies: [

.package(url: "https://github.com/tid-kijyun/Kanna.git", from: "4.0.0")

],

targets: [

.target(

name: "YourTarget",

dependencies: ["Kanna"]),

]

)

$ swift build

Note: When a build error occurs, please try run the following command:

$ sudo apt-get install pkg-config

Manual Installation

In the target settings add $(SDKROOT)/usr/include/libxml2 to the Search Paths > Header Search Paths field

In the target settings add $(SRCROOT)/Modules to the Swift Compiler - Search Paths > Import Paths field

Swift 3.0

For now, please use the feature/v3.0.0 branch.

CocoaPods

⚠️ CocoaPods (1.1.0 or later) is required.

Adding it to your Podfile:

use_frameworks!

pod 'Kanna', :git => 'https://github.com/tid-kijyun/Kanna', :branch => 'feature/v3.0.0'

Carthage

Adding it to your Cartfile:

github "tid-kijyun/Kanna" "feature/v3.0.0"

In the project settings add $(SDKROOT)/usr/include/libxml2 to the "header search paths" field

Swift Package Manager

Installing libxml2 to your computer:

// macOS

$ brew install libxml2

$ brew link --force libxml2

// Linux(Ubuntu)

$ sudo apt-get install libxml2-dev

Adding it to your Package.swift:

import PackageDescription

let package = Package(

name: "YourProject",

dependencies: [

.Package(url: "https://github.com/tid-kijyun/Kanna.git", majorVersion: 2)

]

)

$ swift build

Note: When a build error occurs, please try run the following command:

$ sudo apt-get install pkg-config

Manual Installation

In the target settings add $(SDKROOT)/usr/include/libxml2 to the Search Paths > Header Search Paths field

In the target settings add $(SRCROOT)/Modules to the Swift Compiler - Search Paths > Import Paths field

Swift 2.x

Three means of installation are supported:

CocoaPods

⚠️ CocoaPods (0.39 or later) is required.

Adding it to your Podfile:

use_frameworks!

pod 'Kanna', '~> 1.1.0'

Carthage

Adding it to your Cartfile:

github "tid-kijyun/Kanna" ~> 1.1.0

Manual Installation

In the target settings add $(SDKROOT)/usr/include/libxml2 to the Search Paths > Header Search Paths field

In the target settings add -lxml2 to the Linking > Other Linker Flags field

Import libxml headers:

Copy the those import statements:

#import

#import

#import

and paste them into your [Modulename]-Bridging-Header.h

Note: With manual installation, this library doesn't need to be imported, or namespace-qualified in your code.

Synopsis:

import Kanna

let 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)

}

}

License:

The MIT License. See the LICENSE file for more information.

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐