2

在我保存 tha 之后,我正在编辑一个特定节点文件的 xml 文件,但由于 我的代码的第 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 文件中?

4

1 回答 1

1

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');
于 2012-08-23T10:42:51.677 回答