PHP XPath表元素消失


PHP XPath Table elements disapearing

我刚刚学习了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

它没有组合这些单元格。。。您正在输出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 />';
  }
}