0

私は XPath を使い始めたばかりで、テーブル要素を正しくトラバースして tr の td 値を見つける方法をいじっています。ノードの兄弟値のみをエコーアウトしようとしています。たとえば、私のテーブル:

<table class="123">
    <tbody>
        <tr>
            <td id="myYear">Year</td>
            <td>2001</td>
            <td>2002</td>
            <td>2003</td>
        </tr> 
        <tr>
            <td id="myScores">Scores</td>
            <td>82</td>
            <td>87</td>
            <td>94</td>
        </tr> 
    </tbody>
</table>

私のphpコードは次のとおりです。

$dom = new DOMDocument;
$dom->preserveWhiteSpace = false;       
$dom->loadHTML($content);
$xpath = new DOMXpath($dom);

$myYear = $xpath->query('//table[@class="123"]/tbody/tr/td[@id="myYear"]');

foreach ($myYear as $year) {
    echo $year->nodeValue; //returns Year
    echo "<br>";

    $siblings = $year->nextSibling;

    foreach ($siblings as $value) {
        echo $value->nodeValue;
    }
} 

上記の例では、出力は「Year」ですが、「myScores」の 3 つの兄弟値 (82、87、94 など) の出力が得られません。

アドバイスをありがとう。

4

1 に答える 1

1

ここでいくつかの自己学習が行われています!私は単に次の兄弟を次のように使用しました:

$myYear = $xpath->query('//table[@class="123"]/tbody/tr/td[@id="myYear"]/following-sibling::*');

foreach ($myYear as $year) {
    echo $year->nodeValue; //returns Year
    echo "<br>";
} 
于 2012-12-09T06:47:37.243 に答える