【问题标题】:how to get a raw from a DOMNodeList如何从 DOMNodeList 中获取原始数据
【发布时间】:2012-08-24 11:13:50
【问题描述】:

我有一个DomDocument,这是不可能的var_dump(这真的让我很生气)我这样做了:

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

这样的回应:

<?xml version="1.0" ?>
<rss version="2.0">
  <channel>
      <url>beaute-mode/cheveux/11460--choisir-un-headband</url>
      <title>get_url_article</title>
      <host>myhost</host>
  </channel>
</rss> 

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

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

谢谢。

【问题讨论】:

    标签: php domdocument


    【解决方案1】:

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

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

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

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

    【讨论】:

      【解决方案2】:

      PHP 本身 - 即使 PHP 5.4 已宣布改进 - 在显示 DomNodeDomNodeList 的结构信息方面并不是那么好。

      您可以执行我在类似问题Debug a DOMDocument Object in PHP 中概述的操作:

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

      这将输出以下内容:

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

      您可以在Gist of mine 中找到源代码。

      【讨论】:

      • 非常有趣的答案,我会把你的要点收藏起来。 PS:我使用的是 5.4.6,我看不出 5.3 与 var_dump(DOMDocument) 之间有任何区别
      • 我现在用 PHP 5.4 进行了测试,我也没有看到它们。看起来这需要更多的研究和更好地理解php.net/ChangeLog-5.php:版本5.3.11; 2012 年 4 月 26 日:DOM - 向 DOM 对象添加了调试信息处理程序。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-10-13
      • 2014-08-01
      • 1970-01-01
      • 2021-09-06
      • 1970-01-01
      • 1970-01-01
      • 2021-12-09
      相关资源
      最近更新 更多