我正在使用php xpath从下面的xml feed和php函数中获取值。
<FOUND>
<IMAGES>
<IMAGE>
<SMALL>images/small.jpg</SMALL>
<MED>images/med.jpg</MED>
<LARGE>images/large.jpg</LARGE>
<EXTRAL>images/extra.jpg</EXTRAL>
</IMAGE>
<IMAGE>
<SMALL>images1/small.jpg</SMALL>
<MED>images1/med.jpg </MED>
<LARGE>images1/large.jpg</LARGE>
<EXTRAL>images1/extra.jpg</EXTRAL>
</IMAGE>
<IMAGE>
<SMALL>images2/small.jpg</SMALL>
<MED>images2/med.jpg </MED>
<LARGE>images2/large.jpg</LARGE>
<EXTRAL>images2/extra.jpg</EXTRAL>
</IMAGES>
</FOUND>
function img ($id){
$xml=simplexml_load_file("feed1.xml");
//$xml=simplexml_load_string($string);
if (!$xml) {
trigger_error("There was an error",E_USER_ERROR);
}
$images=$xml->xpath('//IMAGE');
return $images;
}
以上只是部分代码cz,feed非常庞大..我想知道是否有办法只抓取第一个和第三个图像对象块,跳过第二个块并显示剩余的图像块?< / p>
我有一个单独的巨大的xml feed与上面的feed非常相似,它就像80个图像对象块。所以我想在每10个块之后显示一条消息。我是怎么做到的?
任何帮助将不胜感激
答案 0 :(得分:3)
要获得第一个和第三个块,您可以这样做:
//IMAGE[position() == 1 || position() == 3]
获得例如你可以做的每10个元素:
//IMAGE[position() mod 10 == 0]
我不太确定在每个10块之后显示一条消息是什么意思,但你可以这样做:
$images = $xml->xpath('//IMAGE');
foreach($images as $key => $image) {
// do whatever you want to do with the image
if($key % 10 == 9) {
echo 'Some message';
}
}
答案 1 :(得分:0)
有关XPath语法的详细信息,请访问http://www.w3schools.com/xpath/xpath_syntax.asp。
并且......由于xpath()返回一个数组,也许你可以在foreach()循环中做更复杂的操作。