Ji 5.0.0

Ji 5.0.0

测试测试
Lang语言 SwiftSwift
许可协议 MIT
发布最新发布2019年6月
SPM支持SPM

张红浩维护。



Ji 5.0.0

  • 张红浩

Ji: a Swift XML/HTML parser

Ji 戟

CI Status CocoaPods Version Carthage Compatible License Platform

Ji (戟) 是一个用于解析XML/HTML的libxml2的Swift封装。

特点

  • 构建XML/HTML树并导航。
  • 支持XPath查询。
  • 综合单元测试覆盖率。
  • 支持Swift包管理器(SPM)。支持Linux。

要求

  • iOS 8.0+ / Mac OS X 10.9+ / watchOS 2.0+ / tvOS 9.0+
  • Xcode 8.0+

安装

CocoaPods

要使用 CocoaPods 将 Ji 集成到你的 Xcode 项目中,请在 Podfile 中指定它

use_frameworks!

pod 'Ji', '~> 5.0.0'

然后,运行以下命令

$ pod install

Carthage

要使用 Carthage 将 Ji 集成到你的 Xcode 项目中,请在 Cartfile 中指定它

github "honghaoz/Ji" ~> 5.0.0

Swift Package Manager (SPM)

先决条件

  • OSX
brew install libxml2
brew link --force libxml2
  • Linux
$ sudo apt-get install libxml2-dev

更新 Package.swift

要将 Ji 集成到项目中,请向你的 Package.swift 文件中添加适当的描述

// swift-tools-version:5.0
import PackageDescription

let package = Package(
    name: "YOUR_PROJECT_NAME",
    dependencies: [
        .package(url: "https://github.com/honghaoz/Ji.git", from: "5.0.0")
    ],
    targets: [
        .target(
            name: "YOUR_TARGET_NAME",
            dependencies: ["Ji"]
        ),
        ...
    ]
)

手动

如果你不希望使用依赖管理器,可以手动将 Ji 集成到项目中。

  • 将源代码添加到你的项目中

    • Ji.swiftJiHelper.swiftJiNode.swiftSources/Ji 文件夹拖入你的项目中。
    • Sources/Clibxml2 文件夹拖入你的项目中。
  • 配置您的项目

    • 打开项目,选择目标,在 构建设置 下,在 头文件搜索路径 中,添加 $(SDKROOT)/usr/include/libxml2
    • 构建设置 下,在 导入路径 中,添加 $(SRCROOT)/Clibxml2 (请确保这是 Clibxml2 文件的路径)

使用方法

如果您使用 CocoaPods 进行集成,请先集成 Ji。

import Ji
  • 使用 URL 进行初始化
let jiDoc = Ji(htmlURL: URL(string: "http://www.apple.com/support")!)
let titleNode = jiDoc?.xPath("//head/title")?.first
print("title: \(String(describing: titleNode?.content))") // title: Optional("Official Apple Support")
  • 使用 String 进行初始化
let xmlString = "<?xml version='1.0' encoding='UTF-8'?><note><to>Tove</to><from>Jani</from><heading>Reminder</heading><body>Don't forget me this weekend!</body></note>"
let jiDoc = Ji(xmlString: xmlString)
let bodyNode = jiDoc?.rootNode?.firstChildWithName("body")
print("body: \(String(describing: bodyNode?.content))") // body: Optional("Don\'t forget me this weekend!")
  • 使用 Data 进行初始化
let googleIndexData = try? Data(contentsOf: URL(string: "http://www.google.com")!)
if let googleIndexData = googleIndexData {
    let jiDoc = Ji(htmlData: googleIndexData)!
    let htmlNode = jiDoc.rootNode!
    print("html tagName: \(String(describing: htmlNode.tagName))") // html tagName: Optional("html")

    let aNodes = jiDoc.xPath("//body//a")
    if let firstANode = aNodes?.first {
        print("first a node tagName: \(String(describing: firstANode.name))") // first a node tagName: Optional("a")
        let href = firstANode["href"]
        print("first a node href: \(String(describing: href))") // first a node href: Optional("http://www.google.ca/imghp?hl=en&tab=wi")
    }
} else {
    print("google.com is inaccessible")
}

let 戟文档 = (htmlURL: URL(string: "https://cocoapods.org.cn/pods/Ji")!)
let attribution = 戟文档?.xPath("//ul[@class='attribution']")?.first
print("作者(Author): \(String(describing: attribution?.content))") // 作者(Author): Optional("ByHonghao Zhang")

许可证

MIT 许可证 (MIT)

版权所有 (c) 2019 张宏昊

特此授予任何获得此软件及其相关文档副本(以下称“软件”)的人免费使用本软件的权利,包括但不限于使用、复制、修改、合并、出版、分发、再许可和/或出售软件副本,并允许本软件的接收者为此目的进行操作,前提是

所有副本或软件的主要部分必须包含上述版权声明和本许可声明。

软件按“原样”提供,不提供任何形式的保证,无论是明示的还是暗示的,包括但不限于对适销性、特定用途适用性和非侵权的保证。在任何情况下,无论是基于合同、侵权或其他法律行为,作者或版权所有者均不对任何索赔、损害或其他责任承担责任,无论此类索赔、损害或其他责任是由于、来自或与本软件或其使用或其他方式产生的。