Code Monkey home page Code Monkey logo

kanna's Introduction

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

ℹ️ Documentation

Features:

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

Installation:

Swift 4 (beta)

If you want to use Swift 4, please use branch feature/v4.0.0.
This is a beta version. There may be API changes.

Swift 3.0

CocoaPods

⚠️ CocoaPods (1.1.0 or later) is required.

Adding it to your Podfile:

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

Adding it to your Cartfile:

github "tid-kijyun/Kanna" ~> 2.1.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

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
  1. Add these files to your project:
    Kanna.swift
    CSS.swift
    libxmlHTMLDocument.swift
    libxmlHTMLNode.swift
    libxmlParserOption.swift
  2. In the target settings add $(SDKROOT)/usr/include/libxml2 to the Search Paths > Header Search Paths field
  3. In the target settings add -lxml2 to the Linking > Other Linker Flags field
  4. Import libxml headers:

Copy the those import statements:

#import <libxml/HTMLtree.h>
#import <libxml/xpath.h>
#import <libxml/xpathInternals.h>

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 = "<html>...</html>"

if let doc = 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 = 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 infomation.

kanna's People

Contributors

albinekcom avatar brandonshin avatar dodderjs avatar emersonwood avatar kiliankoe avatar leoru avatar macbaszii avatar morpheby avatar nilsd avatar phimage avatar readmecritic avatar rob-smallshire avatar stigi avatar tid-kijyun avatar xpqz avatar younata avatar zachwaugh avatar zack2012 avatar zsszatmari avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.