如何获取 DomElement 的字符串?
Posted
技术标签:
【中文标题】如何获取 DomElement 的字符串?【英文标题】:How to get string for a DomElement? 【发布时间】:2016-03-21 16:00:53 【问题描述】:我有一个DomElement
,但遗憾的是它没有DomDocument
拥有的saveXML()
方法。
我正在尝试获取 DomElement 的原始 XML 字符串表示形式。
我该怎么做?
【问题讨论】:
【参考方案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 上进行测试。
【讨论】:
以上是关于如何获取 DomElement 的字符串?的主要内容,如果未能解决你的问题,请参考以下文章