SimpleXMLElement,如何避免实体错误? (实体'Acirc'未在...中定义)

时间:2013-04-07 03:18:43

标签: xml dom entity character

如何在XML文档包含博客文章类型内容的环境中避免尽可能多的实体冲突?

Warning: SimpleXMLElement::__construct() [simplexmlelement.--construct]: Entity: line 1104: parser error : Entity 'Acirc' not defined in ... (path)

导致此错误的行:

$results = new SimpleXmlElement( $xml );

我还可以控制生成XML文档的函数。我一直试图在引入DOM的每个元素上使用此函数修复实体解析错误:

function my_special_entity_function($text) {
    $text= html_entity_decode($text,ENT_QUOTES,"ISO-8859-1"); #NOTE: UTF-8 does not work!
    //$text= preg_replace('/&#(\d+);/me',"chr(\\1)",$text); #decimal notation
    //$text= preg_replace('/&#x([a-f0-9]+);/mei',"chr(0x\\1)",$text);  #hex notation

    return $text;
}

最后,我使用DOMDocument()来创建XML文件。除了这个问题,它通常工作正常。

1 个答案:

答案 0 :(得分:1)

XML与HTML不同,只知道四个命名实体:<>'"。要更多地教它,你需要一个带有实体声明的DOCTYPE; XML Schema对您没有帮助。