47个版本 (22个破坏性更新)
0.24.0 | 2024年4月19日 |
---|---|
0.23.0 | 2024年3月22日 |
0.22.0 | 2024年2月20日 |
0.17.0 | 2023年11月13日 |
0.7.1 | 2022年12月22日 |
#230 in 数据结构
每月48次下载
用于 natural-xml-diff
390KB
7K SLoC
Xot - XML对象树
Xot是一个功能齐全的Rust XML树访问和操作库。使用Xot,您可以将XML数据加载到对象树中,然后对其进行操作,并将其序列化回XML。
功能
-
广泛的XML树访问和操作API。
-
您可以访问节点之父节点!许多Rust XML树库不支持此功能:例如 xmltree-rs,RustyXML,minidom 和 elementtree 都没有这个功能。 roxmltree 允许访问父节点,但仅限于只读。
-
轻松地将节点从树中移动到树中,从树中移动到其他树中。
-
访问整个XML结构,包括注释和处理指令,并支持命名空间和属性节点。
-
紧凑存储XML数据,具有高效的遍历。
-
将XML解析成树,并将其序列化回XML。
-
美化打印。删除非重要空白。
支持
Xot具有全面的XML支持。支持元素和属性的命名空间。您还可以获取注释和处理指令。
Xot公开整个XML结构以供访问和程序化操作。
局限性
以下是一些局限性
- 不支持DTD。
- 仅支持XML 1.0。
为什么还需要另一个Rust XML库?
如果需要能够将XML作为树访问,在必要时对其进行修改,并将其再次序列化,请使用Xot。虽然存在各种Rust XML树库,但似乎没有哪个特别关注完整的树操作API,包括父节点访问,因此Xot旨在填补这一空白。
如果需要以树的形式访问XML,性能极高,且根本不需要树操作或序列化,我推荐 roxmltree。
对于像Xpath以及树操作等广泛的功能,您可以使用libxml,它是libxml2 C库的封装。遗憾的是,其树访问功能并不完全完整,我在使用时遇到过奇怪的错误甚至崩溃;这也是我创建Xot的部分原因。
如果您需要以高性能处理大量XML数据,可能不想使用树库,而是使用各种XML解析/序列化库之一。
实现说明
Xot底层使用indextree包。Xot完全封装了indextree的功能,但允许的各种操作都是从indextree中取出的。
依赖项
~4–6.5MB
~168K SLoC