【问题标题】:DOMDocument getElementsByTagName not workingDOMDocument getElementsByTagName 不起作用
【发布时间】:2012-07-18 13:28:34
【问题描述】:

我正在尝试使用DOMDocument 函数getElementsByTagName(),但它一直返回一个空对象。我正在使用以下代码:

// Create some HTML
$output = '
<html>
   <body>
      <a href="foo">Bar</a>
   </body>
</html>';

// Load the HTML
$dom = new DOMDocument;
$dom->loadHTML($output);

// Find all links (a tags)
$links = $dom->getElementsByTagName('a');

var_dump($links); // object(DOMNodeList)#31 (0) { } - empty object

我错过了什么?查看文档,看来我正在正确使用该功能。

【问题讨论】:

  • $dom 实际上是你的 HTML 文档?您确定“错误”发生在 getElementsByTagName 而不是之前?

标签: php xml-parsing domdocument


【解决方案1】:

var_dump 只是说你有一个DOMNodeList 对象。遍历列表,你会看到它在那里:

foreach( $links as $a) {
     echo $a->nodeName . ' ' . $a->nodeValue;
}

这将输出:

a Bar 

因为它是一个&lt;a&gt; 标签,它的内容是Bar

【讨论】:

    【解决方案2】:

    不确定您对var_dump 有什么期望,但如您所见,该元素包含在该节点列表中:

    var_dump($links->item(0));
    //object(DOMElement)#3 (0) {}
    var_dump($links->item(0)->getAttribute("href"));
    //string(3) "foo"
    

    【讨论】:

      猜你喜欢
      • 2011-02-20
      • 1970-01-01
      • 2011-11-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-29
      相关资源
      最近更新 更多