PHP DOM Xpath - 如何获得单个元素

时间:2011-11-24 14:20:17

标签: php dom xpath

<?php
$html = new DOMDocument();
$html->loadHtmlFile( 'report.html' );
$xpath = new DOMXPath( $html );

$results = $xpath->evaluate('/html/body/div/table[2]/tr/td[3]');
foreach ($results as $result)
{
  {
    echo $result->nodeValue."\r\n";
  }
}
?> 

返回

GTkio94312
10/24/2011 10:21:45
01:19:46

我试过

echo $result->nodeValue->item[0];

只能获得

GTkio94312

但它返回一个空行。哪里是我的错?

1 个答案:

答案 0 :(得分:2)

->nodValue返回一个简单的字符串,而不是一个对象。任何给定节点只有一个nodeValue,因此没有->item[...]子对象/子数组来从中检索其他数据。

$results->item(0)->nodeValue;  // correct - nodevalue of first result node in results object
       ^---note the S
$result->item(0)->... // incorrect - result is a single node

xpath的query()返回一个DOMNodeList。在该列表上执行foreach将返回xpath查询找到的各个DOMNode对象。每个DOMNode都有一个nodeValue属性,该属性是节点作为字符串的内容。