【问题标题】:How to get string for a DomElement?如何获取 DomElement 的字符串?
【发布时间】:2016-03-21 16:00:53
【问题描述】:

我有一个DomElement,但遗憾的是它没有DomDocument 拥有的saveXML() 方法。

我正在尝试获取 DomElement 的原始 XML 字符串表示形式。

我该怎么做?

【问题讨论】:

    标签: php xml domdocument


    【解决方案1】:

    DomElement 具有其DomDocument 的属性,即ownerDocument

    因此您可以通过以下方式获取 DomElement 的 XML:

    $domElementXml = $domElement->ownerDocument->saveXML($domElement);
    

    您必须再次传递节点,因为ownerDocument 指的是整个文档。因此,运行 $domElement->ownerDocument->saveXML() 将获取文档的整个 XML,其中也可能包含不同的 DomElement 对象。

    【讨论】:

    • 你肯定很快就想到了!
    • @miken32 其实我没有
    【解决方案2】:

    这扩展了 k0pernikus answer 并包括一个 SimpleXMLElement 变体。它适用于任何随机 DOM 元素,而无需转储文档 XML:

    <?php
    
    $outerXmlAsString = $yourDomElementGoesHere
        ->ownerDocument
        ->saveXML($yourDomElementGoesHere);
    
    // or
    
    $outerXmlAsString = simplexml_import_dom($yourDomElementGoesHere)
        ->asXML();
    

    例子:

    <?php
    
    $doc = new DOMDocument('1.0','utf-8');
    $root = new DOMElement('root');
    $doc->appendChild($root);
    $child = new DOMElement('child');
    $root->appendChild($child);
    $leaf = new DOMElement('leaf','text');
    $child->appendChild($leaf);
    
    echo $child->ownerDocument->saveXML($child), PHP_EOL;
    echo simplexml_import_dom($child)->asXML(), PHP_EOL;
    

    示例输出:

    <child><leaf>text</leaf></child>
    <child><leaf>text</leaf></child>
    

    3v4l.org 上进行测试。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-30
      • 2014-01-03
      • 2013-03-30
      相关资源
      最近更新 更多