#xml-parser #xml #xpath #html #parser

libxml

A Rust 对 libxml2 的封装 - 为 Gnome 项目开发的 XML C 解析器和工具包

48 个版本

0.3.3 2023 年 7 月 18 日
0.3.2 2023 年 3 月 7 日
0.3.1 2022 年 3 月 26 日
0.3.0 2021 年 5 月 27 日
0.0.3 2016 年 2 月 24 日

解析器实现 中排名 66

Download history 5333/week @ 2024-03-14 5352/week @ 2024-03-21 5738/week @ 2024-03-28 6415/week @ 2024-04-04 5714/week @ 2024-04-11 7632/week @ 2024-04-18 7265/week @ 2024-04-25 6085/week @ 2024-05-02 7148/week @ 2024-05-09 7265/week @ 2024-05-16 5731/week @ 2024-05-23 6521/week @ 2024-05-30 6086/week @ 2024-06-06 5484/week @ 2024-06-13 5294/week @ 2024-06-20 4182/week @ 2024-06-27

每月下载量 22,135
95 个 crate 中使用(15 个直接使用)

MIT 许可证

760KB
17K SLoC

CI API Documentation License crates.io

Rust 对 libxml2 的封装。

此项目的主要目标是利用 libxml2 的成熟度和稳定性,同时原生 Rust XML crate 正在成熟,成为接近即插即用的替代品。

截至 crate 的 0.2.0 版本发布,有一些适度的不变性保证

  • 可变性以及所有权 - 我们使用 Rc<RefCell<T>> 封装来确保 libxml2 操作在 Rust 层的运行时安全性。
  • 内存安全性保证 - 特别是 NodeDocument 对象在丢弃时具有自动的记账和释放,以确保无泄漏的封装使用。
  • 无线程安全性 - libxml2 的全局内存管理在以最小干预的方式线程安全地适应时是一个挑战

覆盖率:目前仅覆盖了 libxml2 的子集,欢迎贡献。我们尝试通过每个版本增加支持。

欢迎! 在这些警告下,项目的贡献者正在将生产工作迁移到 Rust,并发现继续依赖 libxml2 对于初始移植是有帮助的缓解。因此,如果您的流程尚未完全得到支持,欢迎为此 crate 贡献。

安装先决条件

在进行常规 cargo build/install 步骤之前,您需要使用原始 libxml2 代码的相关组件。这些组件可能会随着时间的推移而逐渐过时 - 如果是这样,请通过打开新的 issue/PR 来让我们知道。

Linux/Debian

在 Linux 系统上,您需要 libxml2 的开发头文件(例如 Debian 中的 libxml2-dev),以及 pkg-config

MacOS

社区贡献:

$ brew install libxml2 # e.g. version 2.9.12 
$ ln -s /usr/local/Cellar/libxml2/2.9.12/lib/libxml2.2.dylib /usr/local/lib/libxml-2.0.dylib
$ export LIBXML2=/usr/local/Cellar/libxml2/2.9.12/lib/pkgconfig/libxml-2.0.pc

Windows

社区贡献:

  • 通过访问BuildTools手动安装构建工具C++和英文语言
  • 以管理员权限启动cmd提示符,并依次执行以下命令
C:\> git clone https://github.com/microsoft/vcpkg
C:\> .\vcpkg\bootstrap-vcpkg.bat
C:\> setx /M PATH "%PATH%;c:\vcpkg" && setx VCPKGRS_DYNAMIC "1" /M
C:\> refreshenv
C:\> vcpkg install libxml2:x64-windows
C:\> vcpkg integrate install

依赖项