Kanna 5.3.0

Kanna 5.3.0

测试测试通过的
Lang语言 SwiftSwift
许可证 MIT
Released最新释放版2024年2月
SPM支持SPM

_tid_ 维护。



Kanna 5.3.0

Kanna(鉋)

Kanna(鉋)是一个跨平台(macOS、iOS、tvOS、watchOS和Linux)的XML/HTML解析器!

它受到Nokogiri(鋸)的启发。

Build Status Platform Cocoapod Carthage compatible Swift Package Manager Reference Status

ℹ️ 文档

特性

  • 支持XPath 1.0进行文档搜索
  • 支持CSS3选择器进行文档搜索
  • 支持命名空间
  • 完整测试套件

Swift 5安装

CocoaPods

将以下内容添加到您的Podfile文件中

use_frameworks!
pod 'Kanna', '~> 5.2.2'

Carthage

请在您的 Cartfile 中添加以下内容。

github "tid-kijyun/Kanna" ~> 5.2.2

对于 xcode 11.3 及之前的版本,需要以下设置。

  1. 在项目设置中,将 $(SDKROOT)/usr/include/libxml2 添加到“头文件搜索路径”字段。

Swift Package Manager

  1. 将 libxml2 安装到您的计算机
// 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. 请在您的 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: [
        .target(
            name: "YourTarget",
            dependencies: ["Kanna"]),
    ]
)
$ swift build

注意:当构建出问题时,请尝试运行以下命令

// Linux(Ubuntu)
$ sudo apt-get install pkg-config

手动安装

  1. 将这些文件添加到您的项目中
    Kanna.swift
    CSS.swift
    libxmlHTMLDocument.swift
    libxmlHTMLNode.swift
    libxmlParserOption.swift
    模块
  2. 在目标设置中,将 $(SDKROOT)/usr/include/libxml2 添加到 Search Paths > Header Search Paths 字段。
  3. 在目标设置中,将 $(SRCROOT)/Modules 添加到 Swift Compiler - Search Paths > Import Paths 字段。

Swift 4 的安装方法

Swift 3 的安装方法

概要

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

捐赠

如果你喜欢Kanna,请通过GitHub sponsors或PayPal进行捐赠。
用于改进和维护库。

许可证

MIT许可证。有关更多信息,请参阅LICENSE文件。