保存'&' PHP中的XML Dom Document

时间:2014-10-21 07:58:02

标签: php xml

我的表单帖子的标题值设置为:

$title = "Company & Sons";

$xmlDoc = new DomDocument('1.0', 'utf-8');
$node = $xmlDoc->createAttribute('title');
$node->value = $title;

...

$completed = $xmlDoc ->saveXML();

当我检查保存的XML时,它保存为:

<title> Company &amp; Sons </title>

如何将其保存为&

1 个答案:

答案 0 :(得分:2)

如果&字符按原样保存,则您将不再拥有有效的XML。

因此,具有特殊含义的实体以XML格式转义;因此&amp;

要解决此问题,您可以将字段声明为CDATA

<title>
    <![CDATA[
        Company & Sons
    ]]>
</title>

但是,在反序列化或读取XML时,您不必担心&amp;被转义。读者将正确地将转义值返回到其原始形式(与反序列化时JSON中的\u0001 unicode转义转换为有效字符编码的方式非常相似。)

tl; dr:你的输出很好,不要惊慌。