1个不稳定版本
使用旧的Rust 2015
0.1.0 | 2022年4月21日 |
---|
#29 in #streaming-parser
140KB
2.5K SLoC
rbatis_xml_parser
警告:此库为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