【发布时间】:2021-12-26 18:59:04
【问题描述】:
我正在尝试通过 PHP 修改 130mb+ XML 文件,因此它只显示子节点是特定值的结果。由于我们用于将 XML 导入我们网站的软件的限制,我正在尝试对此进行过滤。
示例:(模型数据)
<Items>
<Item>
<Barcode>...</Barcode>
<BrandCode>...</BrandCode>
<Title>...</Title>
<Content>...</Content>
<ShowOnWebsite>false</BrandDescr>
</Item>
<Item>
<Barcode>...</Barcode>
<BrandCode>...</BrandCode>
<Title>...</Title>
<Content>...</Content>
<ShowOnWebsite>true</BrandDescr>
</Item>
<Item>
<Barcode>...</Barcode>
<BrandCode>...</BrandCode>
<Title>...</Title>
<Content>...</Content>
<ShowOnWebsite>false</BrandDescr>
</Item>
</Items>
期望的结果: 我想创建一个新的 XML 文件,其中仅包含子“ShowOnWebsite”为真的记录。
我遇到的问题 因为 XML 太大了,所以简单的解决方案(例如使用 SimpleXML 或将 XML 加载到正文中并编辑其中的节点)不起作用。因为它们都将整个文件读入内存太慢而且通常会失败。
我还查看了 prewk/xml-string-streamer (https://github.com/prewk/xml-string-streamer),它非常适合流式传输大型 XML 文件,因为它不会将它们放在内存中,尽管我找不到任何修改XML 通过该解决方案。 (其他在线帖子说您需要在内存中拥有节点才能对其进行编辑)。
有人知道如何解决这个问题吗?
【问题讨论】:
标签: php xml dom xml-parsing