0

ファイル「file.html」を解析したい:

<div class="result">
    <p class="a">asdf</p>
</div>
<div class="result">
    <p class="a">hjkl</p>
    <p class="b">lkjh</p>
</div>

PHP コードの場合:

<?php
$dom = new DOMDocument();
$dom->loadHTMLFile(file.html);

$xpath = new DOMXPath($dom);

$entries = $xpath->query('//div[@class="result"]');

$i = 0;
foreach($entries as $entry) {
    $text_a[$i] = $xpath->query('//p[@class="a"]', $entry);
    $text_b[$i] = $xpath->query('//p[@class="b"]', $entry);
    $i++;
}
?>

1. 結果は text_a のみ、2 番目は text_a と text_b を取得したいと思います。

しかし、残念ながら、最初の結果ではクラス a とクラス b のコンテンツが取得され、2 番目の結果ではクラス a のコンテンツのみが取得されます。

どうすればこの問題を解決できるか知っていますか?

4

1 に答える 1

1

これは、相対 XPath が必要な場所で絶対 XPath を使用するという一般的な落とし穴に陥ったためだと思います。これを試してください:

$text_a[$i] = $xpath->query('p[@class="a"]', $entry);
$text_b[$i] = $xpath->query('p[@class="b"]', $entry);
于 2013-03-10T18:38:17.687 に答える