如何在 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 方法即可。

例如,要提取 &lt;OtherNode&gt; 节点的值,您可以使用:

$items = $dom->getElementsByTagName('OtherNode');
if ($items->length > 0) 
  var_dump( $items->item(0)->nodeValue );

【讨论】:

感谢您的回复,但实际上我似乎没有正确解释我的(第一个)问题。我收到的文件只是一个例子。我要做的是构建与文件相同的结构,但使用 DOMDocument.

以上是关于如何在 PHP 中将 XML 字符串转换为 DOMDocument?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 java 中将 org.w3c.dom.Element 输出为字符串格式?

在 JavaScript 中将字符串转换为 XML 文档

如何在java中将大型XML转换为字符串

如何在QT中将xml节点数据转换为字符串[重复]

如何在iOS中将字符串转换为xml? (目标 C,xcode 7.2)

在 vuejs 中将字符串转换为 Dom