使用PHP解析XML链接

时间:2012-03-09 13:09:12

标签: php html xml parsing xml-parsing

我有一个类似于这样的XML Feed:

xml

我可以使用simpleXML轻松解析标题:

$pictureBoxXMLFeed = simplexml_load_file('https://www.picturebox.tv/xml/feeds/FindAnyFilm/FindAnyFilm.xml');;

echo $pictureBoxXMLFeed->entry[1]->title;

foreach($pictureBoxXMLFeed->entry as $value){

    echo $value->title;
    echo '<br/>';

}

但我需要抓住Feed中的链接元素,如下所示:

<link href="http://www.picturebox.tv/watchnow?id=UKIC30" rel="alternate"/>

仅供参考,这不起作用:

echo $ value-&gt; link;

感谢您的帮助......

5 个答案:

答案 0 :(得分:3)

这是你的意思吗?

$string = '
<entry>
    <link href="http://www.picturebox.tv/watchnow?id=UKIC30" rel="alternate"/>
</entry>';

$simpleXML = simplexml_load_string($string);
foreach($simpleXML->link->attributes() as $name => $value) {
    echo $name.': '.$value.'<br />';
}

给出:

href: http://www.picturebox.tv/watchnow?id=UKIC30
rel: alternate

答案 1 :(得分:1)

在每个$ value中,它是一个simplexml_element,你的href是一个属性,所以你需要检查

foreach ($value->attributes as $a) {
  if ($a->getName() == "href") { do something; }
}

$value->{"href"}; http://us2.php.net/manual/en/class.simplexmlelement.php

答案 2 :(得分:1)

这个怎么样?

$pictureBoxXMLFeed = simplexml_load_file('https://www.picturebox.tv/xml/feeds/FindAnyFilm/FindAnyFilm.xml');;

foreach($pictureBoxXMLFeed->entry[1] as $value){
    if($value->getName() == 'link') {
    echo $value->asXML();
    }
}

答案 3 :(得分:0)

href是一个属性,所以:

foreach($pictureBoxXMLFeed->entry as $value){
    echo $value->link['href'];
    echo '<br/>';
}

foreach($pictureBoxXMLFeed->entry as $value){
    echo $value->link->attributes()->href;
    echo '<br/>';
}

答案 4 :(得分:-3)

试试这个:

$pictureBoxXMLFeed = simplexml_load_file('https://www.picturebox.tv/xml/feeds/FindAnyFilm/FindAnyFilm.xml',LIBXML_NOEMPTYTAG);

然后看看link是否来了......