是否可以通过在PHP中使用Xpath而不是一个来从查询中接收更多信息? (-nodeValue)

时间:2012-03-19 09:03:34

标签: php xml xpath

海,

例如,我有一个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}";
}  
?>

但这看起来很难看, 还有另一种可能性,以便我可以组合这两个代码块吗?

这样的事情?

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

亲切的问候

1 个答案:

答案 0 :(得分:1)

您可以通过连接来调整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>
...
...

然后只需在每个foreach循环周期中拉出值1和2即可。

希望这有帮助!