2016-03-01 154 views
-1

我在PHP中的Xpath函数有问题。我创建了simpleXML而不是运行xpath。然后我想运行它到xpath的结果,但只应用到第一个元素。但它仍然采用所有元素,例如没有使用xpath。我还打印了数组如何处理第一个xpath,并且它采用了我想要的方式。任何人都可以帮忙吗?PHP Xpath-从另一个元素中选择元素

$elem = simplexml_load_file($fileIn); 

$xpathArg = "//".$arg['eFR']; 
$prem = $elem->xpath($xpathArg); 

$xpathArg2 = "//".$arg['eSE']; 
print_r($prem[0]->xpath($xpathArg2)); 
+1

请张贴有效XML的有效迷你片段。而你想要的是什么。而你取而代之。和$ arg []的内容 - 一个完整的,自包含的代码示例。专业问题=专业答案。 – michi

+0

[在SimpleXML对象上使用xPath返回重复数据的Foreach循环可能的重复](http://stackoverflow.com/questions/9652575/foreach-loop-with-xpath-on-simplexml-object-returning-duplicate-data) – har07

回答

0

/开头的XPath是绝对路径。您需要从上下文节点开始的路径,否则上下文节点将被忽略。在第二个xpath查询的开头简单地添加.将确保它从您指定的节点开始。

$elem = simplexml_load_file($fileIn); 

$xpathArg = "//".$arg['eFR']; 
$prem = $elem->xpath($xpathArg); 

$xpathArg2 = ".//".$arg['eSE']; 
print_r($prem[0]->xpath($xpathArg2));