【问题标题】:append XML literal to DOMDocument in php without escaping在php中将XML文字附加到DOMDocument而不转义
【发布时间】:2016-01-08 21:28:59
【问题描述】:

我有一个字符串,它表示我想在 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>

【问题讨论】:

    标签: php xml domdocument


    【解决方案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);
    

    【讨论】:

    • 感谢您的快速回复!这正是我所需要的!
    猜你喜欢
    • 2014-09-16
    • 2011-07-30
    • 2021-12-31
    • 1970-01-01
    • 2015-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-25
    相关资源
    最近更新 更多