将编码添加到SimpleXml的xml文件中?

时间:2011-08-21 18:52:38

标签: php xml simplexml

我有一个外部xml文件,我必须选择,没有设置编码,但我发现它的有效载荷是编码ISO-8859-1。

我知道这是因为如果我手动将文件编辑为encoding =“ISO-8859-1”,那么它会按预期处理。

在实例化simplexml对象时,我可以告诉simplexml要处理的编码吗?

附录

因为xml文件太脏了我可能最终会使用xmllint - 在这里发布给其他感兴趣的人 - 格式化它是缩进的,设置编码不存在的地方并清理坏实体(&amp;等等)< / p>

xmllint --format --encode iso-8859-1 -o cleansed.xml dirty.xml

1 个答案:

答案 0 :(得分:2)

您可以设置DomDocument的编码,然后使用simplexml_import_dom()将其转换为simplexml:

$dom = new DomDocument('1.0', 'iso-8559-1');
$dom->load('externalfile.xml');

if (!$dom) {
    echo 'Parsing error';
    exit;
}

$s = simplexml_import_dom($dom);