jpe*_*pea 6 php xml xpath simplexml
可以说我有这个XML:
<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>
Run Code Online (Sandbox Code Playgroud)
我想找到文件名值为003的元素,然后找到元素1之前和1之后的元素.这就是我可以获取上一个/下一个功能的数据以及在页面上显示所选图像.我以为这会做到这一点:
$image_id = "003";
$project = $xml_object->xpath("photo[filename='$image_id']");
Run Code Online (Sandbox Code Playgroud)
但是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]
Run Code Online (Sandbox Code Playgroud)
用这个:
$project = $xml_object->xpath("//photo[filename='$image_id']");
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6484 次 |
最近记录: |