如何在巨大的XML文件中执行命令行XPath查询?

MRA*_*MRA 9 xml xpath xmllint

我有一组XML文件,其中一些非常大(最多约5000万个元素节点).我正在使用它xmllint来验证这些文件,由于流API,它甚至可以很好地工作.

xmllint --loaddtd --stream --valid /path/to/huge.xml
Run Code Online (Sandbox Code Playgroud)

我最近了解到,xmllint它还能够执行命令行XPath查询,这非常方便.

xmllint --loaddtd --xpath '/root/a/b/c/text()' /path/to/small.xml
Run Code Online (Sandbox Code Playgroud)

但是,这些XPath查询不适用于巨大的XML文件.一段时间后我才收到"被杀"的消息.我尝试启用流式传输API,但这只会导致无输出.

xmllint --loaddtd --stream --xpath '/root/a/b/c/text()' /path/to/huge.xml
Run Code Online (Sandbox Code Playgroud)

有没有办法在使用XPath查询时启用流模式xmllint?是否有其他/更好的方法可以对巨大的XML文件执行命令行XPath查询?

gio*_*ele 5

如果您的 XPath 表达式非常简单,请尝试xmlcutty

从主页:

xmlcutty 是一个简单的工具,用于快速从大型 XML 文件中提取元素。由于它以流方式工作,因此几乎不使用内存,并且每分钟可以处理大约 1G 的 XML。