我需要读取一些非常庞大的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>
显然,
g:material
标签中缺少闭合标签</ul>
。此外,开发这个Feed的人应该将g:material
内容封装到CDATA
中,但他们没有...基本上,我想做的就是添加丢失的CDATA
部分。我尝试使用SAX解析器读取此文件,但在读取
</g:material>
标签时失败,因为缺少</ul>
标签。我尝试了XMLReader,但基本上遇到了相同的问题。
我可能可以使用DomDocument :: loadHtml来处理,但是这个文件的大小与DOM方法不太兼容。
您有什么想法,如何能简单地修复此Feed,而不必购买大量RAM让DomDocument正常工作?
谢谢。