我试图弄清楚如何从 php(最新版本)中非常大的 xml 文件中删除元素(及其子项)。
我知道我可以使用 dom 和 simpleXml,但这需要将文档加载到内存中。
我正在查看 XML 编写器/读取器/解析器函数和谷歌搜索,但似乎没有关于该主题的内容(所有答案都建议使用 dom 或 simpleXml)。这不可能是正确的——我错过了什么吗?
我发现的最接近的是这个(C#):
您可以使用 XmlReader 顺序读取您的 xml(ReadOuterXml 在您的情况下一次读取整个节点可能很有用)。然后使用 XmlWriter 写出您要保留的所有节点。(从大型 XML 文件中删除节点)
真的吗?那是方法吗?我必须复制整个大文件?
真的没有别的办法了吗?
一种方法
正如建议的那样,
我可以使用 phps XML 阅读器或解析器读取数据,可能会对其进行缓冲,然后将其写入/转储+附加到新文件中。
但这种方法真的实用吗?
我有将巨大的 xml 文件拆分成更小的部分的经验,基本上是使用建议的方法,并且这个过程需要很长时间才能完成。
我的数据集目前还不够大,无法让我了解这将如何解决。我只能假设结果是一样的(一个非常缓慢的过程)。
有没有人有在实践中应用这个的经验?