Php 如何按原样将xml文件特殊字符值存储在its中?

Php 如何按原样将xml文件特殊字符值存储在its中?,php,xml,Php,Xml,我正在使用xml文件存储特殊字符 这是我的原始文件 <root> <popups> <popup id="1"> <text1> <![CDATA[dynamic text popup 2a]]> </text1> <text2> <![CDATA[dy

我正在使用xml文件存储特殊字符

这是我的原始文件

<root>
  <popups>
        <popup id="1">
            <text1>
                <![CDATA[dynamic text popup 2a]]>
            </text1>
            <text2>
                <![CDATA[dynamic text popup 2b]]>
            </text2>
         </popup>
     </popups>
</root>

现在,当我使用php来保存特殊的字符,例如,它变成这样

<root>
    <popups>
        <popup id="1">
            <text1>&lt;![CDATA[Hello world]]&gt;</text1>
            <text2>&lt;![CDATA[asassa]]&gt;</text2>
        </popup>
    </popups>
</root>

![CDATA[你好,世界]]
![CDATA[asassa]]
我使用了以下代码:

$this->xmlDocument = simplexml_load_file("xml/conf.xml");
    $pages_node = $this->xmlDocument->xpath("/root/popups/popup[@id=1]");

    $name = $_POST['popup-name'];
    $editor1 = trim(strip_tags($_POST['editor1']));
    $editor2 = trim(strip_tags($_POST['editor2']));
    if (!empty($name)){
        if (!empty($editor1)){ 
            $pages_node[0]->text1 = "<![CDATA[".$editor1."]]>"; 
        }
        if (!empty($editor2)){ 
            $pages_node[0]->text2 =  "<![CDATA[".$editor2."]]>" ;
        }
        $this->xmlDocument->asXml($this->basePath() . "conf/conf.xml");
    }
$this->xmlDocument=simplexml\u load\u文件(“xml/conf.xml”);
$pages\u node=$this->xmlDocument->xpath(“/root/popups/popup[@id=1]”);
$name=$\u POST['popup-name'];
$editor1=修剪(带标签($\u POST['editor1']);
$editor2=修剪(带标签($\u POST['editor2']);
如果(!空($name)){
如果(!empty($editor1)){
$pages_node[0]->text1=“”;
}
如果(!empty($editor2)){
$pages_node[0]->text2=“”;
}
$this->xmlDocument->asXml($this->basePath()“conf/conf.xml”);
}

如何在不需要编码的情况下保存特殊字符?

Simplexml本来就是简单的,因此没有这样的选项
dom\u import\u simplexml
可以帮助您从simplexml对象创建
domdocument

您必须创建DOMDocument的新实例,然后创建CDATA节并将其放入导入的DomeElement节点

如果您使用的是php
DomDocument
,则必须创建并将其附加到text1/text2节点

如果没有
text1
text2
节点,则必须先创建它们,然后将cdata节点附加到它们,最后将它们附加到
弹出窗口中

$cdata = $dom->createCDATASection("test");

$text1 = $dom->createElement('text1');
$text1->appendChild($cdata);

$text1 = $dom->createElement('text2');
$text2->appendChild($cdata);

$popupNode->appendChild($text1);
$popupNode->appendChild($text2);