6
可以说我有这个XML还可以得到元素:PHP的XPath - 一个价值发现元素,前后元素
<images>
<photo>
<thumbImg>images/thumbs/002.jpg</thumbImg>
<filename>002</filename>
</photo>
<photo>
<thumbImg>images/thumbs/008.jpg</thumbImg>
<filename>008</filename>
</photo>
<photo>
<thumbImg>images/thumbs/003.jpg</thumbImg>
<filename>003</filename>
</photo>
<photo>
<thumbImg>images/thumbs/006.jpg</thumbImg>
<filename>006</filename>
</photo>
<photo>
<thumbImg>images/thumbs/005.jpg</thumbImg>
<filename>005</filename>
</photo>
</images>
而且我想找到的003名值的元素,然后找到元素1之前和元素之后1。这就是为什么我可以获得prev/next功能的数据以及在页面上显示选定的图像。我想这会做到这一点:
$image_id = "003";
$project = $xml_object->xpath("photo[filename='$image_id']");
但它的print_r是一个空数组...是否有使用XPath一个简单的方法也许做到这一点?我认为我可以通过循环遍历并将prev/next元素放入临时数组中,然后一旦找到它,打破循环并返回临时数据,但我认为xpath可能能够做得更多一点典雅。
编辑:解决了 - 这里是为兄弟节点的更清晰的答案:
// for the one prior
//photo[filename='$image_id']/preceding-sibling::photo[1]
// for the one after
//photo[filename='$image_id']/following-sibling::photo[1]
真棒,那工作 - 你将如何得到一个和下一个元素呢? – jpea 2011-06-08 13:40:38
'$ project = $ xml_object-> xpath(“// photo”); (list(,$ node)= each($ project)){var_dump($ node); '会遍历整个循环。 – Femi 2011-06-08 13:46:41
对不起,澄清 - 我将如何去获取单个元素之前和单个元素之后,并非所有的照片元素 – jpea 2011-06-08 13:49:45