我必须阅读一些非常重的 XML 文件(在 200 MB 和 1 GB 之间),其中一些文件是无效的。让我给你一个小例子:
<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:g="http://base.google.com/ns/1.0" version="2.0">
<item>
<title>Some article</title>
<g:material><ul><li>50 % Coton</li><li>50% Lyocell</li></g:material>
</item>
</rss>
显然,标签中缺少一个</ul>
结束g:material
标签。此外,开发此提要的人应该将g:material
内容包含在CDATA
中,但他们没有...基本上,这就是我想要做的:添加这个缺失的CDATA
部分。
我尝试使用 SAX 解析器来读取这个文件,但是在读取</g:material>
标签时它失败了,因为</ul>
标签丢失了。我尝试过使用 XMLReader,但遇到了基本相同的问题。我可能可以用 DomDocument::loadHtml 做一些事情,但是这个文件的大小与 DOM 方法并不真正兼容。您知道我如何可以简单地修复此提要,而无需购买大量 RAM 以供 DomDocument 工作吗?谢谢。