58个版本
0.28.0 | 2024年8月8日 |
---|---|
0.27.0 | 2024年3月22日 |
0.26.0 | 2022年3月27日 |
0.25.1 | 2019年10月25日 |
0.2.1 | 2015年7月31日 |
23 在 解析器实现 中排名
每月下载量702,816
用于 1,246 个crate(直接150个)
370KB
8K SLoC
html5ever
html5ever是Servo项目的一部分开发的一个HTML解析器。
它可以按照WHATWG规范(即“HTML5”)解析和序列化HTML。然而,实际行为中存在一些差异,其中大多数已在错误跟踪器中记录。html5ever通过了html5lib-tests的所有标记符测试,除了未实现的功能之外的大多数树构建器测试。目标是通过所有html5lib测试,同时提供生产级Web浏览器所需的所有钩子,例如 document.write
。
注意,HTML语法与XML非常相似。为了正确解析XHTML,请使用XML解析器(尽管,野外的许多XHTML文档都是以与HTML兼容的形式序列化的)。
html5ever是用Rust编写的,因此它避免了使用C时出现的著名的安全问题。用Rust构建还使库具有与C编写的HTML解析器相当的高性能。html5ever基本上是一个C HTML解析器,但不需要垃圾回收器或其他重型运行时进程。
Rust入门
将html5ever添加到您的Cargo.toml
文件中作为依赖项
[dependencies]
html5ever = "0.27"
您还应该查看 examples/html2html.rs
、examples/print-rcdom.rs
和 API 文档。
在其他语言中开始使用
Python和其他语言的绑定非常受欢迎。
html5ever 开发
要获取测试套件,您需要运行
git submodule update --init
在仓库根目录下运行 cargo doc
以在 target/doc/
下构建本地文档。
详细信息
html5ever 使用回调来操作 DOM,因此它不提供任何 DOM 树表示。
html5ever 专门使用 UTF-8 来表示字符串。未来它将通过转换输入来支持其他文档编码(以及 UCS-2 document.write
)。
代码与 WHATWG 语法规范进行交叉引用,最终我们将有一种方法可以并排显示代码和规范。
html5ever 针对 Rust 的官方稳定版本进行构建,尽管一些优化仅在夜间版本上受支持。
依赖关系
~0.8–6MB
~23K SLoC