Xpath найти уникальный селектор - PullRequest
0 голосов
/ 29 марта 2011

Я хочу проанализировать HTML-страницу для предопределенной строки, а затем создать уникальную ссылку на это местоположение.С помощью «Wikken» я зашел так далеко ... но он работает не совсем корректно.

$d = new DOMDocument();
$d->loadXML($xml);
$x = new DOMXPath($d);
$result = $x->evaluate("//text()[contains(.,'STRING')]/ancestor::*/@id");
$unique = null;
for($i = $result->length -1;$i >= 0 && $item = $result->item($i);$i--){
    if($x->query("//*[@id='".addslashes($item->value)."']")->length == 1){
        echo 'Unique ID is '.$item->value."\n";
            $unique = $item->value;
        break;
    }
}
if(is_null($unique)) echo 'no unique ID found';

__ РЕДАКТИРОВАТЬ _

Позвольте мне объяснить проблему еще раз.Я ищу, чтобы сделать HTML-парсер, который может анализировать страницу и найти уникальную строку.Затем мне нужно найти уникальный заполнитель для этого места, чтобы при изменении данных на сайте я мог найти новые данные.Wrikken помог мне найти строку ... к сожалению, приведенный выше код неправильно находит уникальный селектор CSS.

1 Ответ

0 голосов
/ 29 марта 2011

Не уверен, что это ваша проблема, но я обычно делал бы первую часть более похожей на эту:

//*[contains(text(),'STRING')]/ancestor::*/@id

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...