【问题标题】:How to convert an XML string into a DOMDocument in PHP?如何在 PHP 中将 XML 字符串转换为 DOMDocument?
【发布时间】: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 文档。

标签: php xml domdocument xml-parsing


【解决方案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.
猜你喜欢
  • 2012-10-10
  • 1970-01-01
  • 2020-02-19
  • 2015-09-25
  • 1970-01-01
  • 2012-07-13
  • 1970-01-01
相关资源
最近更新 更多