Можно ли получить больше информации из запроса с помощью Xpath в PHP, чем один?(-NodeValue) - PullRequest
1 голос
/ 19 марта 2012

Hoi,

например, у меня есть XML-файл:

<bookstore>

<book category="COOKING">
  <title lang="en">Everyday Italian</title>
  <author>Giada De Laurentiis</author>
  <year>2005</year>
  <price>30.00</price>
</book>

<book category="WEB">
  <title lang="en">XQuery Kick Start</title>
  <author>James McGovern</author>
  <author>Per Bothner</author>
  <author>Kurt Cagle</author>
  <author>James Linn</author>
  <author>Vaidyanathan Nagarajan</author>
  <year>2003</year>
  <price>49.99</price>
</book>

</bookstore>

И я хочу все заголовки и цены

Я мог бы написать этот код

<php
$res = $xpath->query('/bookstore/book/title');
foreach ($res as $item) {
  echo "{$item->nodeValue}";
}  
$res = $xpath->query('/bookstore/book/price');
foreach ($res as $item) {
  echo "{$item->nodeValue}";
}  
?>

Но это выглядит очень некрасиво, Есть ли еще одна возможность, чтобы яМожно ли объединить эти 2 блока кода?

как-то так?

<php
$res = $xpath->query('/bookstore/book');
foreach ($res as $item) {
  echo "{$item->title} <br/> {$item->price}";
}  
?>

С уважением

1 Ответ

1 голос
/ 19 марта 2012

Вы можете настроить XPATH с помощью сцепления следующим образом: «/ bookstore / book / title | / bookstore / book / price» Это даст вам список узлов как таковой:

<title lang="en">Everyday Italian</title>
<price>30.00</price>
<title lang="en">XQuery Kick Start</title>
<price>49.99</price>
...
...

Затем просто извлеките значения 1 и 2 в каждом цикле цикла foreach для того, что вам нравится.

Надеюсь, это поможет!

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