【发布时间】:2012-07-20 10:40:44
【问题描述】:
我正在使用 XMLReader 处理一个大型 (1.2GB) XML 文件。当它到达一个包含无效字符的节点时,脚本停止运行并显示错误消息“警告:XMLReader::next(): 解析器错误:输入不正确的 UTF-8,指示编码!”。
这是一个重复错误的示例脚本:
$reader = new XMLReader();
$reader->open('sample.xml',null, LIBXML_NOERROR | LIBXML_NOWARNING);
while ($reader->read() && $reader->name !== 'item');
while ($reader->name === 'item') {
$reader->next('item');
}
$reader->close();
sample.xml:
<?xml version="1.0" ?>
<source>
<item>
<data><![CDATA[good node]]></data>
</item>
<item>
<data><![CDATA[Suspendisse euismod, ultrices, ligula leo lacinia magna, eleifend fermentum lacus est ut velit! Vestibulum nec magna in tellus mollis fermentum. Mauris vehicula felis eget eros auctor consectetur. Pellentesque imperdiet arcu ac mauris tempor id feugiat mauris commodo. Sed facilisis turpis eu mi ornare tempor. Ut velit erat, volutpat ut sollicitudin et, mattis sed turpis. bad nodé]]></data>
</item>
<item>
<data><![CDATA[another good node]]></data>
</item>
</source>
是否有要么忽略节点并移动到下一个节点,要么清理数据以处理它?
XML 文档来自外部来源,我无法控制它,也无法更改它。
亲切的问候。
【问题讨论】:
标签: php xml-parsing