如何在 PHP 中将 XML 字符串转换为 DOMDocument?
Posted
技术标签:
【中文标题】如何在 PHP 中将 XML 字符串转换为 DOMDocument?【英文标题】:How to convert an XML string into a DOMDocument in PHP? 【发布时间】:2011-07-30 22:51:22 【问题描述】:我从客户那里得到了一个示例 XML 字符串,我想将其转换为 DOMDocument。不过,我似乎无法正确获取第一个节点....
字符串是这样的;
<ev:Events xmlns:ev="xsdEvents" xsi:schemaLocation="xsdEvents [url]" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Node>
<OtherNode>value</OtherNode>
</Node>
</ev:Events>
如何通过 php 中的 DOMDocument 正确设置?
【问题讨论】:
你到底想做什么? 答案是使用DOMDocument::loadXml()
,但我拒绝给出答案,因为它应该是谷歌上的第一件事,而且无论如何在 SO 上都有大量的 DOM 使用示例。如果不仅仅是“如何使用 DOMDocument 加载 XML”,请澄清您的问题。
我同意@Gordon。我认为我们不应该复制众所周知的官方文档。我可能错了...重新标记,因为它与 XSLT 无关。
@Alejandro;在我的示例中,所有节点名称等都是虚拟的,以保护官方文档。
对不起,我的意思是 PHP 文档。
【参考方案1】:
好吧,将 XML 字符串加载到 DOMDocument 对象并不难——您只需使用DOMDocument::loadXML()
。
例如,在你的情况下,你会使用:
$string = <<<XML
<ev:Events xmlns:ev="xsdEvents" xsi:schemaLocation="xsdEvents [url]" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Node>
<OtherNode>value</OtherNode>
</Node>
</ev:Events>
XML;
$dom = new DOMDocument();
$dom->loadXML($string);
然后,访问您的数据只需使用相关的 DOM 方法即可。
例如,要提取 <OtherNode>
节点的值,您可以使用:
$items = $dom->getElementsByTagName('OtherNode');
if ($items->length > 0)
var_dump( $items->item(0)->nodeValue );
【讨论】:
感谢您的回复,但实际上我似乎没有正确解释我的(第一个)问题。我收到的文件只是一个例子。我要做的是构建与文件相同的结构,但使用 DOMDocument.以上是关于如何在 PHP 中将 XML 字符串转换为 DOMDocument?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 java 中将 org.w3c.dom.Element 输出为字符串格式?