Swiftpack.co - tid-kijyun/Kanna as Swift Package

Swiftpack.co is a collection of thousands of indexed Swift packages. Search packages.
tid-kijyun/Kanna 5.2.7
Kanna(鉋) is an XML/HTML parser for Swift.
⭐️ 2,195
🕓 11 weeks ago
.package(url: "https://github.com/tid-kijyun/Kanna.git", from: "5.2.7")


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

It was inspired by Nokogiri(鋸).

CI Platform Cocoapod Carthage compatible Swift Package Manager MIT License

:information_source: Documentation


  • ☑ XPath 1.0 support for document searching
  • ☑ CSS3 selector support for document searching
  • ☑ Support for namespaces
  • ☑ Comprehensive test suite

Installation for Swift 5


Add the following to your Podfile:

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.

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

Swift Package Manager

  1. Installing libxml2 to your computer:
// 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
  1. Add the following to your 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: [
            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

Manual Installation

  1. Add these files to your project:
  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

Installation for swift 4

Installation for swift 3


import Kanna

let html = "<html>...</html>"

if let doc = try? HTML(html: html, encoding: .utf8) {
    // Search for nodes by CSS
    for link in doc.css("a, link") {
    // Search for nodes by XPath
    for link in doc.xpath("//a | //link") {
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) {


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.


Stars: 2195
Last commit: 2 weeks ago

Ad: Job Offers

iOS Software Engineer @ Perry Street Software
Perry Street Software is Jack’d and SCRUFF. We are two of the world’s largest gay, bi, trans and queer social dating apps on iOS and Android. Our brands reach more than 20 million members worldwide so members can connect, meet and express themselves on a platform that prioritizes privacy and security. We invest heavily into SwiftUI and using Swift Packages to modularize the codebase.

Submit a free job ad (while I'm testing this). The analytics numbers for this website are here.

Release Notes

11 weeks ago

Fix crash when access regexDict from multiple threads #254 @nanashiki

Swiftpack is being maintained by Petr Pavlik | @ptrpavlik | @swiftpackco | API | Analytics