标签: xml xpath command-line xmlstarlet
命令
$ xmlstarlet sel -t -c "/collection/record" file.xml
似乎将整个文件加载到内存中。这不适用于大型XML文件。
xmlstarlet是否提供流模式以从大型(100G +)XML文件中提取子元素?
xmlstarlet
答案 0 :(得分:8)
由于我只需要一小部分XPath用于大型XML文件,我实际上自己实现了一个小工具:xmlcutty。
我的问题的例子可以这样写:
$ xmlcutty -path /collection/record file.xml
答案 1 :(得分:7)
Xmlstarlet将所有(或大多数)操作转换为xslt转换,因此简短答案为否。
您可以尝试使用stx,这是类似于xslt的流式转换语言。另一方面,如果你不太关心xml,那么使用sax或iterparse在python中编写一些东西可能会更容易,更快(创建代码所需的时间)。