Latest 5.0.0
Homepage https://github.com/tid-kijyun/Kanna
License MIT
Platforms ios 8.0, osx 10.9, tvos 9.0, watchos 2.0, requires ARC
Authors

Kanna(鉋)

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

It was inspired by Nokogiri(鋸).

Build Status
Platform
Cocoapod
Carthage compatible
Swift Package Manager
Reference Status

information_source: Documentation

Features:

  • [x] XPath 1.0 support for document searching
  • [x] CSS3 selector support for document searching
  • [x] Support for namespaces
  • [x] Comprehensive test suite

Installation:

Swift 5

CocoaPods

Adding it to your Podfile:

use_frameworks!
pod 'Kanna', '~> 5.0.0'
Carthage

Adding it to your Cartfile:

github "tid-kijyun/Kanna" ~> 5.0.0
  1. In the project settings add $(SDKROOT)/usr/include/libxml2 to the "header search paths" field
Others(Swift PM and manual Installation)

Please refer to the case of Swift 4.

Swift 4

CocoaPods

:warning: 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
  1. 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
  1. Add these files to your project:
    Kanna.swift
    CSS.swift
    libxmlHTMLDocument.swift
    libxmlHTMLNode.swift
    libxmlParserOption.swift
    Modules
  2. In the target settings add $(SDKROOT)/usr/include/libxml2 to the Search Paths > Header Search Paths field
  3. 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

:warning: 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"
  1. 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
  1. Add these files to your project:
    Kanna.swift
    CSS.swift
    libxmlHTMLDocument.swift
    libxmlHTMLNode.swift
    libxmlParserOption.swift
    Modules
  2. In the target settings add $(SDKROOT)/usr/include/libxml2 to the Search Paths > Header Search Paths field
  3. In the target settings add $(SRCROOT)/Modules to the Swift Compiler - Search Paths > Import Paths field

Synopsis:

import 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)
    }
}

License:

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

Latest podspec

{
    "name": "Kanna",
    "version": "5.0.0",
    "summary": "Kanna is an XML/HTML parser for iOS/macOS/watchOS/tvOS and Linux.",
    "homepage": "https://github.com/tid-kijyun/Kanna",
    "license": "MIT",
    "authors": {
        "Atsushi Kiwaki": "[email protected]"
    },
    "source": {
        "git": "https://github.com/tid-kijyun/Kanna.git",
        "tag": "5.0.0"
    },
    "social_media_url": "https://twitter.com/_tid_",
    "platforms": {
        "ios": "8.0",
        "osx": "10.9",
        "tvos": "9.0",
        "watchos": "2.0"
    },
    "requires_arc": true,
    "preserve_paths": "Modules/*",
    "source_files": [
        "Sources/**/*.swift",
        "Sources/**/*.h"
    ],
    "xcconfig": {
        "HEADER_SEARCH_PATHS": "$(SDKROOT)/usr/include/libxml2",
        "SWIFT_INCLUDE_PATHS": "$(SRCROOT)/Kanna/Modules"
    }
}

Pin It on Pinterest

Share This