Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP SimpleXML XPath获取下一个父节点_Php_Xpath_Simplexml_Parent_Siblings - Fatal编程技术网

PHP SimpleXML XPath获取下一个父节点

PHP SimpleXML XPath获取下一个父节点,php,xpath,simplexml,parent,siblings,Php,Xpath,Simplexml,Parent,Siblings,我从来没有在这里问过问题,所以如果我的问题格式不好或者不够具体,请原谅。我只是一个涉猎者,对PHP和XPath知之甚少 我有这样一个XML文件: <catalogue> <item> <reference>A1</reference> <title>My title1</title> </item> <item> <reference>A2</reference&g

我从来没有在这里问过问题,所以如果我的问题格式不好或者不够具体,请原谅。我只是一个涉猎者,对PHP和XPath知之甚少

我有这样一个XML文件:

<catalogue>
 <item>
  <reference>A1</reference>
  <title>My title1</title>
 </item>
 <item>
  <reference>A2</reference>
  <title>My title2</title>
 </item>
</catalogue>
<p>Next item is My title2</p>
然后,我使用URL参数的引用来获取有关使用PHP的“item”的额外详细信息:

foreach ($xml->item as $item) {
if ($item->reference == $_GET['reference']) {
 echo '<p>' . $item->title . '</p>';
}
foreach($xml->item as$item){
如果($item->reference=$\u GET['reference']){
回显“”.$item->title.“

”; }
所以从www.mysite.com/file.php这样的URL?reference=A1

我会得到这个HTML:

<p>My title1</p>
我的标题1

我意识到我可能做得不对,任何改进的建议都是受欢迎的

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

<catalogue>
 <item>
  <reference>A1</reference>
  <title>My title1</title>
 </item>
 <item>
  <reference>A2</reference>
  <title>My title2</title>
 </item>
</catalogue>
<p>Next item is My title2</p>
下一项是我的标题2

我读过关于以下同级的内容,但我不知道如何使用它。我只能找到引用节点的以下同级,这不是我需要的

感谢您的帮助。

您可以使用:

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

含义:从
目录
根元素的
元素子元素,具有带'A1'字符串值的
引用
元素,导航到元素的
标题
子元素之后的第一个兄弟节点。

我可能会使用xpath获取下一个/上一个(和当前)节点


谢谢你的回答,这对我很有效,但我最终使用了第一个响应。我发现你的解决方案也同样有效。@Hayley Easton:我很高兴它对我有帮助。