编程语言
首页 > 编程语言> > PHP SimpleXML XPath获取下一个父节点

PHP SimpleXML XPath获取下一个父节点

作者:互联网

我以前从未在这里问过一个问题,所以请原谅我的问题,如果它的格式不正确或不够具体.我只是一个涉猎者,对PHP和XPath知之甚少.

我有一个像这样的XML文件:

<catalogue>
 <item>
  <reference>A1</reference>
  <title>My title1</title>
 </item>
 <item>
  <reference>A2</reference>
  <title>My title2</title>
 </item>
</catalogue>

我正在使用SimpleXML拉该文件:

$file = "products.xml";
$xml = simplexml_load_file($file) or die ("Unable to load XML file!");

然后,我使用URL参数中的引用来获取有关使用PHP的“项目”的更多详细信息:

foreach ($xml->item as $item) {
if ($item->reference == $_GET['reference']) {
 echo '<p>' . $item->title . '</p>';
}

因此,从类似www.mysite.com/file.php?reference=A1的URL

我会得到这个HTML:

<p>My title1</p>

我意识到我可能没有正确地做到这一点,欢迎对此提出任何建议.

我的问题是,我想查找下一个和上一个“项目”详细信息.如果我从URL知道reference = A1,如何找到下一个“项目”的参考,标题等?如果我只有“ A1”,并且知道这是一个参考节点,那么如何获得这样的HTML:

<p>Next item is My title2</p>

我已经阅读了有关继兄弟姐妹的信息,但是我不知道如何使用它.我只能找到参考节点的以下同级对象,这不是我所需要的.

任何帮助表示赞赏.

解决方法:

您可以使用:

/catalogue/item[reference='A1']/following-sibling::item[1]/title

含义:从商品目录根元素的item元素子级开始,导航到第一个后继同级item元素的title子级.

标签:siblings,xpath,parent,simplexml,php
来源: https://codeday.me/bug/20191023/1916128.html