我有DomElement
但遗憾的是,saveXML()
没有DomDocument
方法。
我正在尝试获取DomElement的原始XML字符串表示。
我该怎么做?
答案 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上测试一下。