使用PHP读取格式错误的XML(未编码的XML实体)

jsz*_*dko 3 php xml parsing malformed

我在PHP中解析格式错误的XML时遇到了一些麻烦.特别是我正在查询以XML格式返回数据而不在实际数据中编码XML实体的第三方Web服务.例如,其中一个元素包含一个ASCII心脏,"<3",没有引号,XML解析器将其视为开始标记.它应该是'< 3'.

现在我只是将XML字符串传递给SimpleXMLElement,可以预见,这些实例会失败.我已经做了一些环顾四周,似乎PHP Tidy包可能能够帮助我,但你可以做的配置量是压倒性的:(

因此,我只是想知道是否有其他人有这样的问题,如果有的话,他们是如何解决它的.

谢谢!

Mat*_*hen 5

尝试tidy.repairString:

php > $tidy = new tidy();
php > $repaired = $tidy->repairString("<foo>I <3 Philadelphia</foo>", array("input-xml"=>1));
php > print($repaired);
<foo>I &lt;3 Philadelphia</foo>
php > $el = new SimpleXMLElement($repaired);
Run Code Online (Sandbox Code Playgroud)