如何获取 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 上进行测试。
我有一个 DomElement
不幸的是没有 DomDocument
有的 saveXML()
方法。
我正在尝试获取 DomElement 的原始 XML 字符串表示形式。
我该怎么做?
DomElement
有其 DomDocument
的 属性,即 ownerDocument
。
因此您可以通过以下方式获取 DomElement
的 XML:
$domElementXml = $domElement->ownerDocument->saveXML($domElement);
您必须再次传递节点,因为 ownerDocument
指的是整个文档。因此 运行 $domElement->ownerDocument->saveXML()
将获取整个 XML 文档,其中还可能包含不同的 DomElement
对象。
这扩展了
<?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 上进行测试。