在没有转义的情况下将XML文字附加到php中的DOMDocument

时间:2016-01-08 21:28:59

标签: php xml domdocument

我有一个字符串,表示我想要附加到PHP中的DOMDocument的节点,但是当我将它作为值添加到元素时,它会被转义。有没有办法将一大块XML附加到DOMDocument而不会被转义 - 并且添加一个字符串后,会添加几个节点?

以下是我正在尝试做的一个例子:

$string = <<<XML
    <myNode>
        <OtherNode>value</OtherNode>
    </myNode>
XML;

$domDoc = new DOMDocument();
        $xml_id = $domDoc->createElement('mydata');
        $value = $domDoc->createTextNode($string);
        $xml_id->appendChild($value);
        $subNode = $domDoc->appendChild($xml_id);

echo $domDoc->saveXML();

目前,输出看起来像这样:

<?xml version="1.0"?>
<mydata>    &lt;myNode&gt;
        &lt;OtherNode&gt;value&lt;/OtherNode&gt;
    &lt;/myNode&gt;</mydata>

有没有办法让它看起来像这样?

<?xml version="1.0"?>
<mydata>
    <myNode>
        <OtherNode>value</OtherNode>
    </myNode>
</mydata>

1 个答案:

答案 0 :(得分:1)

如果我没有错误,你实际应该创建一个documentFragment并将XML文字追加到那里。然后你应该将documentFragment附加到$xml_id,然后你应该将$xml_id追加到$domDoc

$domDoc = new DOMDocument();
$xml_id = $domDoc->createElement('mydata');
$frag = $domDoc->createDocumentFragment();
$frag->appendXML($string);

$xml_id->appendChild($frag);
$domDoc->appendChild($xml_id);