我有一组 XML 文件,其中一些文件非常大(多达约 5000 万个元素节点)。我正在使用 xmllint
来验证这些文件,由于流式 API,即使对于大型文件也能很好地工作。
xmllint --loaddtd --stream --valid /path/to/huge.xml
我最近了解到 xmllint
还可以进行命令行 XPath 查询,非常方便。
xmllint --loaddtd --xpath '/root/a/b/c/text()' /path/to/small.xml
但是,这些 XPath 查询不适用于巨大的 XML 文件。一段时间后,我刚刚收到一条“被杀死”的消息。我尝试启用流式 API,但这只会导致根本没有输出。
xmllint --loaddtd --stream --xpath '/root/a/b/c/text()' /path/to/huge.xml
在使用 xmllint
进行 XPath 查询时,有没有办法启用流模式?是否有其他/更好的方法来对大型 XML 文件执行命令行 XPath 查询?
最佳答案
如果您的 XPath 表达式非常简单,请尝试 xmlcutty .
来自主页:
xmlcutty is a simple tool for carving out elements from large XML files, fast. Since it works in a streaming fashion, it uses almost no memory and can process around 1G of XML per minute.
关于xml - 如何在巨大的 XML 文件中进行命令行 XPath 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30305724/