将 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> <myNode>
<OtherNode>value</OtherNode>
</myNode></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);
我有一个字符串表示我想附加到 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>
如果我没记错的话,您实际上应该创建一个 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);