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

标签 xml xpath xmllint

我有一组 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/

相关文章:

php - 删除 XML 中的属性

python - 如何使用 python 从 Google 电子表格获取工作表 ID?

xml - 如何用XPath获取某个条件对应的TOP N元素

xpath - XQuery - 如何对一组值使用 eq (=)

xml - XPath Script 不适用于输入一,但对输入二工作得很好

java - 如何在 Android 上从 HTTP 资源正确解析 XML

C# 通过属性名获取 Xelement 属性值

xml - 获取当前节点的值

xml - Linux xml 解析

xml - 从 shell 向 XML 文档的默认 namespace 的标签添加 namespace 前缀