将 XML 文字附加到 php 中的 DOMDocument 而不转义

append XML literal to DOMDocument in php without escaping

我有一个字符串表示我想附加到 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>

如果我没记错的话,您实际上应该创建一个 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);