запрос php xpath и результат xpath - PullRequest
2 голосов
/ 09 апреля 2010

Можно ли использовать запрос xpath для результата, уже полученного с помощью xpath?

Ответы [ 3 ]

1 голос
/ 11 февраля 2012

Я сделал это в PHP / SimpleXML. Сначала я не понял, что вы по-прежнему имеете дело с полным объектом SimpleXML, поэтому, если вы начнете с "/ nodename", вы будете работать с root Если вы начинаете с «nodename», вы начинаете с начала узла результатов. Вот мой пример:

$parsed=simplexml_load_string($XML);

$s = '/ItemSearchResponse/Items/Item';
$items = $parsed->xpath($s);

foreach($items as $item)
  {
    $s = 'ItemAttributes/Feature';
    $features[]=$item->xpath($s);
    $s = 'ASIN';
    $asins[]=$item->xpath($s);
    $s = 'ImageSets/ImageSet[@Category="primary"]';
    $primary_img_set=$item->xpath($s);
    $s = 'MediumImage/URL';
    $medium_image_url[] = $primary_img_set[0]->xpath($s);
  }
1 голос
/ 09 апреля 2010

В большинстве языков / сред хостинга (таких как XSLT, XQuery, DOM) вы можете . Не знаю насчет PHP, но было бы странно, если бы это не разрешалось.

Конечно, результат первого запроса должен быть набором узлов, чтобы в будущем оператор "/" был возможен / разрешен / успешен для него.

0 голосов
/ 27 ноября 2014

Например, в PHP вы можете запустить запрос с контекстом, то есть с заданным узлом. Так что если у вас есть DOMNodeList в результате первого запроса, вы можете сделать что-то вроде этого:

$query1 = '//p';
$query2 = './a'; // do not forget the dot
$node = $xpath->query($query1)->item(0);
$result = $xpath->query($query2, $node);

Конечно, это глупый пример, потому что это можно было сделать всего за один раз с правильным экспериментом XPath, но я считаю, что это иллюстрирует ваш вопрос.

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