关于php:如何从DOMNodeList获取原始内容

how to get a raw from a DOMNodeList

我有一个DomDocument,这对var_dump是不可能的(这确实让我很生气):

1
var_dump($dom->getElementsByTagName('url'));

在这样的回应:

1
2
3
4
5
6
7
8
<?xml version="1.0" ?>
<rss version="2.0">
  <channel>
      <url>beaute-mode/cheveux/11460--choisir-un-headband</url>
      get_url_article
      <host>myhost</host>
  </channel>
</rss>

但是我得到了var_dump回显:object(DOMNodeList)[262]而不是原始数据(这是一个URL)。

所以我的问题很简单,但是如何在不将其封装在DomNodeList中的情况下获取原始数据呢?

谢谢。


DOMNodeList::item()将通过索引在DOMNodeList中给出DOMNode。 例如,要获取列表中的第一个节点:

1
$dom->getElementsByTagName('url')->item(0)

要获取元素包含的实际数据,请使用类似以下的代码:

1
2
3
4
5
if ($node = $dom->getElementsByTagName('url')->item(0)) {
  $url = $node->nodeValue;
} else {
  // Element does not exist, handle error here
}

即使PHP 5.4宣布了改进,PHP本身在显示DOMNodeDOMNodeList的结构信息方面也不是很好。

您可以执行类似问题中概述的操作在PHP中调试DOMDocument对象:

1
2
3
$doc = new DOMDocument();
$doc->loadXML($xml);
DomTree::dump($doc->getElementsByTagName('url'));

将输出以下内容:

1
2
`<url>
  `"beaute-mode/cheveux/11460--choisir-un-headband"

您可以在我的要旨中找到源代码。