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']");

データの行を取得しますが、すべてのセルを 1 つの文字列に結合して 1 つの文字列にし、タグを非表示にします。

私が本当にやりたいのは、それらのセルを分離して、特定の行番号を取得することです。

また、使用している 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 に答える