23 个版本 (12 个破坏性更新)
0.13.6 | 2023 年 9 月 30 日 |
---|---|
0.13.5 | 2022 年 10 月 18 日 |
0.13.4 |
|
0.13.3 | 2020 年 9 月 2 日 |
0.1.0 | 2017 年 12 月 15 日 |
#45 in 解析器实现
1,779,881 每月下载量
用于 1,319 个crate (直接使用 31 个)
69KB
1.5K SLoC
xmlparser
xmlparser 是一个底层、基于拉取的、零分配的 XML 1.0 解析器。
示例
for token in xmlparser::Tokenizer::from("<tagname name='value'/>") {
println!("{:?}", token);
}
为什么需要新的库?
这个库基本上是一个底层 XML 分词器,它保留了标记的位置,并不打算直接使用。如果您正在寻找高级解决方案,请查看 roxmltree.
优点
- 所有标记都包含表示原始文档中子字符串位置的
StrSpan
结构体。 - 良好的错误处理。所有错误类型都包含发生错误的位置(行:列)。
- 没有堆分配。
- 没有依赖项。
- 小巧。根据
cargo-bloat
,发布构建中约为 1400 行代码和 30KiB。 - 支持
no_std
构建。要使用不使用标准库,请禁用默认功能。
限制
- 目前,只有 ENTITY 对象可以从 DOCTYPE 中解析。其他都被忽略。
- 没有树结构验证。因此,像
<root><child></root></child>
或没有根元素的字符串将不会出现错误。您应该手动检查。另一方面,<a/><a/>
将导致错误。 - 重复属性不是错误。所以像这样的XML
<item a="v1" a="v2"/>
将会被无错误地解析。您应该手动检查。 - 仅支持UTF-8。
安全性
- 库不能崩溃。任何崩溃都被视为严重错误,应该报告。
- 库禁止不安全代码。
许可证
以下任一许可证下授权:
- Apache License,版本2.0(LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT许可证(LICENSE-MIT 或 http://opensource.org/licenses/MIT)
任选其一。
贡献
除非您明确说明,否则任何有意提交并由您包含在作品中的贡献,如Apache-2.0许可证中定义的,应如上双许可,不附加任何额外条款或条件。