xmlstarlet sel在大文件上

时间:2015-11-11 15:25:17

标签: xml xpath command-line xmlstarlet

命令

$ xmlstarlet sel -t -c "/collection/record" file.xml
在应用给定的Xpath表达式之前,

似乎将整个文件加载到内存中。这不适用于大型XML文件。

xmlstarlet是否提供流模式以从大型(100G +)XML文件中提取子元素?

2 个答案:

答案 0 :(得分:8)

由于我只需要一小部分XPath用于大型XML文件,我实际上自己实现了一个小工具:xmlcutty

我的问题的例子可以这样写:

$ xmlcutty -path /collection/record file.xml

答案 1 :(得分:7)

Xmlstarlet将所有(或大多数)操作转换为xslt转换,因此简短答案为否。

您可以尝试使用stx,这是类似于xslt的流式转换语言。另一方面,如果你不太关心xml,那么使用saxiterparse在python中编写一些东西可能会更容易,更快(创建代码所需的时间)。