我有一个字符串,表示我想要附加到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> <myNode>
<OtherNode>value</OtherNode>
</myNode></mydata>
有没有办法让它看起来像这样?
<?xml version="1.0"?>
<mydata>
<myNode>
<OtherNode>value</OtherNode>
</myNode>
</mydata>
答案 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);