SimpleXMLElement xml中的特殊字符

时间:2013-04-18 22:59:49

标签: php xml simplexml

我正在使用PHP SimpleXMLElement

创建XML对象

我在$RAWResponse中有完整的XML,所以我使用

$oXMLResponse = new SimpleXMLElement($RAWresponse);

我得到的XML来自Web服务。我检测到XML包含无效字符,如'&'例如。

关于这个问题有很多帖子,但都没有。我尝试了htmlentities(),但这会逃脱每个字符,包括'<'和'>'打开并包含XML元素。

最后我使用了这个功能:

$some_special_chars = array("&");
$replacement_chars  = array("&");
$RAWresponse    = str_replace($some_special_chars, $replacement_chars, $RAWresponse);

$oXMLResponse = new SimpleXMLElement($RAWresponse);

这有效,但这是一个愚蠢的解决方案,因为如果我得到任何其他特殊字符,它将会中断。有更好的解决方案吗?我无法理解为什么SimpleXMLElement会中断,它应该只显示警告或其他内容。

1 个答案:

答案 0 :(得分:1)

使用PHP内置的SimpleXML扩展(甚至是DOM扩展)是不可能的。您必须用适当的实体替换所有无效字符,或者请求Web服务提供者返回有效的XML。