XMLReader在几乎空的xml文件上报告“文档末尾的额外内容”

时间:2011-06-10 09:22:58

标签: php xml parsing xmlreader

我在我们的实时服务器上使用XMLReader时出现问题,而在我们的开发服务器上运行顺畅。在读取xml文件时,XMLReader始终抛出“解析器错误:文档末尾的额外内容”。无论它是否包含数千个元素或仅包含一行。

$reader = new \XMLReader();
$reader->open($xmlFileName, 'UTF-8');
while ( $reader->read() ) { ... do nothing ... }
$reader->close();

xml以最简单的形式显示:

<?xml version="1.0" encoding="UTF-8"?>
<data><articles><![CDATA[test]]></articles></data>

每个xml验证器都说它格式正确,但仍然会抛出错误。

我可以在开发和实时系统之间发现的唯一区别是我们的开发系统(Ubuntu)具有libxml2版本2.7.16而实时系统(CentOs)具有2.6.16。这可能是原因吗?

1 个答案:

答案 0 :(得分:0)

不同的版本可能总是一个问题,虽然它可能无法回答问题所在,只有你可能需要的解决方案。

我怀疑你的CDATA处理(试试内容周围的空间,所以)并且似乎记得在你相当旧的生产版本中有关CDATA处理的一些旧错误,以及你是否真的发生了UTF-8(某些库对字符和默认设置很敏感,如果设置了正确的设置,则忽略手动覆盖。另外,'UTF-8'中的' - '是em-dash,普通破折号还是其他破折号?)

此外,尝试发布您的真实XML,即使是在十六进制转储中,但我似乎记得UTF-8的字符编码被视为其他东西会创建额外的字符(实际上并不存在)。