正在保存'&';到PHP中的XML Dom文档


Saving '&' to XML Dom Document in PHP

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

$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>

如何将其保存为&

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

正因为如此,具有特殊含义的实体在XML中被转义;从而产生CCD_ 3。

为了避免这种情况,您可以将字段声明为CDATA:

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

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

tl;医生:你的输出很好,不要惊慌