XPath
Материал из Chesser Wiki
(перенаправлено с «Xpath»)
Ресурсы
- http://zvon.org/xxl/XPathTutorial/Output_rus/
- http://www.raleigh.ru/XML/w3schools/xpath/
- http://habrahabr.ru/post/107004/
- http://www.w3.org/TR/xpath20/
Примеры XPath
XPath-правило
пример xpath-правила: //div[descendant::*[contains(text(), 'substringaaaa')]] оно выберет ВСЕ div-ы, внутри которых есть слово substringaaaa:
Подробнее разберем каждый элемент адресации:
- // - это значит путь начинается с wildcard-символа, по аналогии с *filename, т.е. любой путь-префикс
- //div - ищем везде div'ы
- //div[*] - явно выбираем ВСЕ div'ы (хотя будет работать и без[*])
- //div[descendant::*] - выбираем ВСЕ div'ы вместе со всеми вложенными тегами(потомками)
- //div[descendant::*[contains(text(), 'substringaaaa')]] - тут сужаем поиск: ВСЕ div'ы, но внутри которых в тексте(в содержимом тегов, в том числе внутри тегов-потомках) содержится слово substringaaaa
Пример использования XPath на PHP
<?php $text = file_get_contents('http://chesser.ru/blog/'); $doc = new DOMDocument(); $doc->loadHTML($text); // для обработки html текста в формате UTF-8 можно использовать такой хак: // $doc->loadHTML('<?xml encoding="UTF-8">' . $text); $xpath = new DOMXpath($doc); $nodes = $xpath->query("//div[descendant::*[contains(text(), 'substringaaaa')]]"); if($nodes->length > 0) { foreach($nodes as $item) var_dump($item->nodeValue); } else { echo 'empty'; } ?>