XPATH在RSS源中的同一元素内获取多个值

时间:2013-01-12 03:10:22

标签: php xpath xml-parsing foreach rss

我有一个rss feed格式如下:

<item>
     <posturl>mysite.com/abc.html</posturl>
     <imagepath>123.jpg</imagepath>
</item>
<item>
     <posturl>mysite.com/def.html</posturl>
     <imagepath>456.jpg</imagepath>        
</item>
<item>
     <posturl>mysite.com/ghi.html</posturl>
     <imagepath>789.jpg</imagepath>    
</item>

我有一个脚本,我想要提取上面的两个值。我可以使用以下代码提取其中一个值并构建html代码:

<?php
     $xml = simplexml_load_file('http://myrssfeed.com');
     $imgs = $xml->xpath('//imagepath');
            echo '<ul>';
         foreach($imgs as $output1) {
            echo '<li><img src="' . $output1 . '" ></li>';
            }

            echo '</ul>';
 ?>

由于这里的人们的帮助,这就像一个魅力。但是我需要扩展 second 回声线来读取类似的内容:

echo  '<li><a href="' . $output2 . '"><img src="' . $output1 . '" ></a></li>';

我需要有关如何在与$ output1相同的项目中提取$ output2 = posturl的帮助。

基本上我需要将图像显示为链接... imagepath和posturl都是项目中的元素。

非常感谢。

1 个答案:

答案 0 :(得分:1)

您可以选择<item>元素,而不是<posturl><imagepath>。像这样:

$xml = simplexml_load_file('http://myrssfeed.com');

echo '<ul>';

foreach($xml->xpath('//item') as $item) { 
    printf('<li><a href="%s"><img src="%s" /></a></li>', 
        $item->posturl, $item->imagepath); 
}

echo '</ul>';