如何获取 DomElement 的字符串?

How to get string for a DomElement?

我有一个 DomElement 不幸的是没有 DomDocument 有的 saveXML() 方法。

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

我该怎么做?

DomElement 有其 DomDocument 的 属性,即 ownerDocument

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

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

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

这扩展了 并包括一个 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 上进行测试。