3

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

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

因此,我只是想知道是否有其他人遇到过这样的问题,如果有,他们是如何解决的。

谢谢!

4

2 回答 2

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);
于 2009-06-25T19:56:06.650 回答
-1
  1. 将内容作为字符串读取。
  2. htmlspecialchars(preg_replace('/[\x-\x8\xb-\xc\xe-\x1f]/','',$string))
  3. 在 SimpleXMLElement 中加载转换后的字符串

到目前为止它对我有用。

于 2009-06-25T19:57:18.567 回答