如何将特殊字符传递给 xml 文件


How to pass special characters to xml file

我正在编辑一个xml文件,一个特定的节点文件,我正在保存tha,但由于我的代码的第7行,它包含一些特殊字符

$xml = simplexml_load_file('demo.xml');
$i=2;
foreach($xml->Page as $myPage){
if($myPage['id']==$i) {
    $da = "data";
    $text = "helloworld";
    $myPage->$da ="<![CDATA[{$text}]]>"; //line number 
    $xml->asXML('demo.xml');
}

如何将字符串原样放入 XML 文件中?

SimpleXML 不能很好地处理 CDATA。如果要编写 CDATA,则需要使用 DOM 对象。例如:

$xml = new DOMDocument();
$xml->load('demo.xml');
$i = 2;
foreach ($xml->getElementsByTagName('Page') as $page) {
    if ($page->attributes->getNamedItem('id')->value == $i) {
        $da = 'data';
        $text = 'helloworld';
        $data = $xml->createElement($da);
        $data->appendChild($xml->createCDATASection($text));
        $page->appendChild($data);
    }
}

如果要继续使用 SimpleXML,可以只将要写入 CDATA 的元素作为 DOM 对象加载。

$xml = simplexml_load_file('demo.xml');
$i = 2;
foreach ($xml->Page as $page) {
    if ($page['id'] == $i) {
        $da = 'data';
        $text = 'helloworld';
        $page->$da = '';
        $node = dom_import_simplexml($page->$da);
        $dom = $node->ownerDocument;
        $node->appendChild($dom->createCDATASection($text));
    }
}
$xml->asXML('demo.xml');