Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork222
Kanna(鉋) is an XML/HTML parser for Swift.
License
tid-kijyun/Kanna
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
Kanna(鉋) is an XML/HTML parser for cross-platform(macOS, iOS, tvOS, watchOS and Linux!).
It was inspired byNokogiri(鋸).
- XPath 1.0 support for document searching
- CSS3 selector support for document searching
- Support for namespaces
- Comprehensive test suite
ℹ️ If you are using Swift 6, please use Kanna 6.0.0 or later.
ℹ️ The same applies if you setStrict Concurrency Check toTargeted or higher.
Add the following to yourPodfile:
use_frameworks!pod'Kanna','~> 5.2.2'
Add the following to yourCartfile:
github "tid-kijyun/Kanna" ~> 5.2.2For xcode 11.3 and earlier, the following settings are required.
- In the project settings add
$(SDKROOT)/usr/include/libxml2to the "header search paths" field
- 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
- Add the following to your
Package.swift:
// swift-tools-version:5.0import PackageDescriptionletpackage=Package( name:"YourProject", dependencies:[.package(url:"https://github.com/tid-kijyun/Kanna.git", from:"5.2.2"),], targets:[.target( 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
- Add these files to your project:
Kanna.swift
CSS.swift
libxmlHTMLDocument.swift
libxmlHTMLNode.swift
libxmlParserOption.swift
Modules - In the target settings add
$(SDKROOT)/usr/include/libxml2to theSearch Paths > Header Search Pathsfield - In the target settings add
$(SRCROOT)/Modulesto theSwift Compiler - Search Paths > Import Pathsfield
import Kannalethtml="<html>...</html>"iflet doc=try?HTML(html: html, encoding:.utf8){print(doc.title) // Search for nodes by CSSforlinkin doc.css("a, link"){print(link.text)print(link["href"])} // Search for nodes by XPathforlinkin doc.xpath("//a | //link"){print(link.text)print(link["href"])}}
letxml="..."iflet doc=try?Kanna.XML(xml: xml, encoding:.utf8){letnamespaces=["o":"urn:schemas-microsoft-com:office:office","ss":"urn:schemas-microsoft-com:office:spreadsheet"]iflet author= doc.at_xpath("//o:Author", namespaces: namespaces){print(author.text)}}
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.
About
Kanna(鉋) is an XML/HTML parser for Swift.
Topics
Resources
License
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Sponsor this project
Uh oh!
There was an error while loading.Please reload this page.
Packages0
Uh oh!
There was an error while loading.Please reload this page.