Как я могу выполнять запросы XPath на элементы domelement с помощью PHP?

Я пытаюсь выполнить запросы Xpath на Домелементы, но это, похоже, не работает. Вот код

<html>
    <div class="test aaa">
        <div></div>
        <div class="link">contains a link</div>
        <div></div>
    </div>
    <div class="test bbb">
        <div></div>
        <div></div>
        <div class="link">contains a link</div>
    </div>
</html>

что я делаю это:

$dom = new DOMDocument();
$html = file_get_contents("file.html");
@$dom->loadHTML($html);
$xpath = new DOMXPath($dom);
$entries = $xpath->query("//div[contains(@class,'test')]");
if (!$entries->length > 0) {
    echo "Nothingn";
} else {
  foreach ($entries as $entry) {
      $link = $xpath->query('/div[@class=link]',$entry);
      echo $link->item(0)->nodeValue;
      // => PHP Notice:  Trying to get property of non-object
  }
}

все работает нормально до $xpath->query('/div[@class=link], $entry);. Я не знаю, как использовать Xpath для определенного DOMElement ($entry).

как я могу использовать запросы xpath на DOMElement?

1 ответов


похоже, вы пытаетесь смешать селекторы CSS с XPath. Вы хотите использовать предикат ([...]) глядя на значение