0

我刚刚了解了 XPath,我只想从表中的某些列中读取数据。

我当前的代码如下所示:

<?php

$file_contents = file_get_contents('test.html');

$dom_document = new DOMDocument();

$dom_document->loadHTML($file_contents);

//use DOMXpath to navigate the html with the DOM
$dom_xpath = new DOMXpath($dom_document);

$elements = $dom_xpath->query("//tr[@class='rowstyle']");

if (!is_null($elements)) {
    foreach ($elements as $element) 
    {
        echo $element->nodeValue . '<br />';
    }
}
else
{
    echo 'none';
}

?>

查询也是一个变体,因为通过我的研究,我发现嵌套表元素存在很多问题,但它产生了相同的结果:

$elements = $dom_xpath->query("//table[@class='tablestyle']/tbody/tr[@class='rowstyle']");

它确实抓取了一行数据,但它变成了一个字符串,将所有单元格组合成一个字符串并使标签消失。

我真正想做的是将这些单元格分开并获取特定的行号。

我也很好奇如何找出我拥有的 XPath 版本……我的 PHP 版本是 5.3.5

4

1 回答 1

1

它没有组合这些单元格......nodeValue在这种情况下,你输出的行为就像innerHTML. 如果您想处理单元格本身,则childNodes使用行作为上下文的使用或 xpah 查询,然后循环遍历单元格。

例子:

$dom_xpath = new DOMXpath($dom_document);

$elements = $dom_xpath->query("//tr[@class='rowstyle']");
foreach ($elements as $element) 
{
  foreach($element->childNodes as $cell) {
     echo $cell->nodeValue . '<br />';
  }

}
于 2012-07-07T02:57:26.510 回答