如何获取DomElement的字符串?

时间:2015-12-15 18:07:49

标签: php xml domdocument

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

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

我该怎么做?

2 个答案:

答案 0 :(得分:8)

DomElement的属性为DomDocument,即ownerDocument

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

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

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

答案 1 :(得分:1)

这会扩展到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上测试一下。