30 个版本 (17 个破坏性版本)

0.19.0 2024 年 8 月 8 日
0.18.1 2024 年 6 月 5 日
0.18.0 2024 年 3 月 22 日
0.17.0 2022 年 3 月 27 日
0.1.0 2015 年 11 月 30 日

#486 in 解析器实现

Download history 21404/week @ 2024-05-04 24351/week @ 2024-05-11 32730/week @ 2024-05-18 26322/week @ 2024-05-25 27373/week @ 2024-06-01 35637/week @ 2024-06-08 27238/week @ 2024-06-15 30591/week @ 2024-06-22 30034/week @ 2024-06-29 32843/week @ 2024-07-06 26748/week @ 2024-07-13 24252/week @ 2024-07-20 27544/week @ 2024-07-27 27297/week @ 2024-08-03 37918/week @ 2024-08-10 25329/week @ 2024-08-17

121,923 每月下载量
262 个 crate(5 个直接) 中使用

MIT/Apache

230KB
5.5K SLoC

xml5ever

https://apache.ac.cn/licenses/LICENSE-2.0 https://opensource.org/licenses/MIT Docs.rs

API 文档

警告:此库为 alpha 质量,因此不提供任何保证。

此 crate 提供了一个基于推送的 XML 解析器库,它以错误恢复为代价换取良好的格式。

xml5ever 主要基于 html5ever 解析器,因此如果您熟悉 html5ever,您将熟悉 xml5ever。

该库采用 MIT 和 Apache 许可证双许可。

为什么你应该使用 xml5ever

此库的主要用途是当 XML 格式不良时,通常来自不良的 XML 模板。XML5 尝试以类似于 HTML5 的方式处理大多数常见错误。

何时使用它?

  • 你对格式良好的文档不感兴趣。
  • 即使数据有错误,你也需要从数据中获取一些信息(尽管不是处理所有可能的错误)。
  • 你需要字符引用或 XML 命名空间等特性。

何时不应使用它

  • 你需要验证你的文档。
  • 你需要 DTD 支持。
  • 你需要一个易于使用的解析器,具有许多扩展(例如 XPath,XQuery)。
  • 你需要一个经过战斗检验、业界认可的解决方案。

安装

将 xml5ever 添加到项目清单中的依赖项

    [dependencies]
    xml5ever = "0.18"

入门

这是一个非常简单的 RcDom 支持的解析器


    let input = "<xml></xml>".to_tendril();

    // To parse XML into a tree form, we need a TreeSink
    // luckily xml5ever comes with a static RC backed tree represetation.
    let dom: RcDom = parse(std::iter::once(input), Default::default());

    // Do something with dom

实际进行解析的是 parse 函数。它期望一个可以被转换成 StrTendril 的迭代器,因此你可以使用 std::iter::once(input)Some(input).into_iter()(其中 input 是类似于 StrTendril 的结构)。

在 xml5ever 上进行工作

要构建示例和测试,你需要做类似以下的事情

    git submodule update --init # to fetch xml5lib-tests
    cargo build
    cargo test

这将从外部仓库检索测试,并调用 cargo 构建和测试包。如果你需要文档,请查看 API 文档 或运行 cargo docs 生成文档。

依赖项

~0.8–5.5MB
~21K SLoC