2个版本
0.1.1 | 2023年6月27日 |
---|---|
0.1.0 | 2023年6月27日 |
#2322 在 解析器实现
276 每月下载量
在 3 个crate中使用 (2个直接使用)
72KB
1.5K SLoC
htmlparser
htmlparser 是一个低级、基于拉取的、零分配的HTML解析器。
示例
for token in htmlparser::Tokenizer::from("<tagname name='value'/>") {
println!("{:?}", token);
}
为什么需要一个新库?
此库是 xmlparser 的副本,并对解析HTML进行了调整。
优点
- 所有标记都包含
StrSpan
结构体,该结构体表示子字符串在原始文档中的位置。 - 良好的错误处理。所有错误类型都包含发生错误的位置(行:列)。
- 没有堆分配。
- 没有依赖项。
- 体积小。根据
cargo-bloat
,发布构建中的LOC约为1400行,大小约为30KiB。 - 支持
no_std
构建。要使用而不使用标准库,请禁用默认功能。
局限性
- 目前,仅从DOCTYPE中解析ENTITY对象。其他所有对象都被忽略。
- 没有树结构验证。因此,像XML这样的
<root><child></root></child>
或没有根元素的字符串将被解析而不会出现错误。您应该手动检查此内容。另一方面,<a/><a/>
将导致错误。 - 重复属性不是错误。因此,像XML这样的
<item a="v1" a="v2"/>
将被解析而不会出现错误。您应该手动检查此内容。 - 仅支持UTF-8。
安全性
- 库不得崩溃。任何崩溃都视为严重错误,应予以报告。
- 库禁止不安全代码。
许可
根据以下之一许可
- Apache License,版本2.0 (LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)
- 麻省理工学院许可证(《LICENSE-MIT》或 http://opensource.org/licenses/MIT)
由您选择。
贡献
除非您明确声明,否则根据Apache-2.0许可证定义,您有意提交以包含在作品中的任何贡献,应按上述方式双重许可,不附加任何额外条款或条件。