在PHP中修改XML prolog

时间:2016-02-13 05:25:53

标签: php xml

我正在使用Simplexml读取XML文件并输出具有不同名称的已翻译XML文件。谷歌翻译以UTF-8输出所有内容,为了正确查看扩展字符,我需要XML Prolog来包含编码信息:

include ':app' , ':volley'

有些文件没有编码信息,甚至根本没有prolog。 是否有通过PHP更改或添加XML文件中的prolog信息的特定方法? 谢谢。

1 个答案:

答案 0 :(得分:1)

例如,请考虑以下具有不需要的XML声明格式的XML字符串。您可以使用DOMDocument来获取没有声明的XML内容,如下所示:

$raw = '<?xml version="1.0"?><root/>';

$xml = new DOMDocument();
$xml->loadXML($raw);
$raw_without_prolog = $xml->saveXML($xml->documentElement);

从这一点开始,您可以简单地添加标准XML声明,以生成任何类型的所需XML(纯stringDOMDocumentSimpleXMLElement,其中一个应该一样简单) :

.....
.....
$prolog = '<?xml version="1.0" encoding="UTF-8"?>';

$new_xml = new DOMDocument();
$new_xml->loadXML($prolog . $raw_without_prolog);

echo $new_xml->saveXML();

<强> eval.in demo