PugiSwift

PugiSwift 是一个围绕 C++ 库 pugixml 的 Swift 封装。其目标是在 Apple 平台和使用 Vapor 的服务器上,提供一种使用 Swift 快速解析 XML 的方法。

当前捆绑的 pugixml 版本是 1.14

pugixml 使用 MIT 许可证授权,可以在这里找到副本。

基准测试

PugiSwift 已经与其他流行的 Swift 包进行了基准测试。此基准测试的代码可在此仓库中找到。测试是在 Release 模式下进行的,并且关闭了调试器。与 FuziXMLCoder 进行了比较。

xychart-beta
    title "Parses per second of 212kb file"
    x-axis "Programs" ["PugiSwift", "Fuzi", "XMLCoder"]
    bar [757, 207, 54]
加载

用法示例

import Foundation
import PugiSwift

@Node struct Records {
    @Attribute let value: String
    @Element(childrenCodingKey: "record") let records: [Record]
}

@Node struct Record {
    let name: String
    let list: Int
}

let str =
"""
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<records value="Hello World">
    <record>
        <name>Paul Koch</name>
        <list>17</list>
    </record>
</records> 
"""

do {
    let records = try Records(from: str)
    print(records)
} catch {
    print("Error: \(error.localizedDescription)")
}