#xml-parser #xml #parser #streaming-parser #xml5

rbatis_xml_parser

基于推送的XML流式解析器

1个不稳定版本

使用旧的Rust 2015

0.1.0 2022年4月21日

#29 in #streaming-parser

MIT/Apache

140KB
2.5K SLoC

rbatis_xml_parser

Build Status http://www.apache.org/licenses/LICENSE-2.0 https://opensource.org/licenses/MIT Clippy Linting Result

API文档

警告:此库为alpha版本,不提供任何保证。

该crate提供了一个基于推送的XML解析库,以错误恢复为代价来牺牲了格式良好性。

rbatis_xml_parser主要基于html5ever解析器,因此如果您有html5ever的经验,您会对rbatis_xml_parser很熟悉。

该库同时遵循MIT和Apache许可证。

#为什么你应该使用rbatis_xml_parser

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

何时应该使用它?

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

何时不应该使用它

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

#安装

在你的项目清单中将rbatis_xml_parser添加为依赖项。

    [dependencies]
    rbatis_xml_parser = "0.1.3"

并在你的lib.rs中添加crate声明

    extern crate rbatis_xml_parser

#入门

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


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

    // To parse XML into a tree form, we need a TreeSink
    // luckily rbatis_xml_parser 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的结构)。

依赖项

~4MB
~65K SLoC