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