XML解析问题PHP

时间:2014-10-18 14:49:00

标签: php xml simplexml

我试图解析以下XML:

  <item><title><![CDATA[Van Gaal: Keep the faith]]></title><description><![CDATA[Manchester United manager Louis van Gaal is in a bullish mood ahead of Monday's trip to face West Brom in front of the Sky Sports cameras.]]>
   </description><link>http://www1.skysports.com/football/news/11667/9520895/premier-league-manchester-united-boss-louis-van-gaal-remains-confident</link>
   <guid isPermaLink="false">11661_9520895</guid>
   <pubDate>Fri, 17 Oct 2014 16:48:00 GMT</pubDate>
   <category>News Story</category>
   <enclosure type="image/jpg" url="http://img.skysports.com/14/09/128x67/football-louis-van-gaal-manchester-united_3202836.jpg" length="123456" /></item>

我在PHP脚本中使用以下代码

$url = $xml->channel->attributes ()->items[$i]->enclosure->url;

但我没有太多运气获得图像的网址。我尝试过使用不起作用的attribute()函数。

任何建议都将不胜感激。

由于

2 个答案:

答案 0 :(得分:1)

我建议在这种情况下使用foreach。而你几乎就是它。

foreach($xml->channel->item as $item) {
    $url = (string) $item->enclosure->attributes()->url;
    echo $url;
}

答案 1 :(得分:0)

您可以使用xpath“// enclosure / @ url”,它会检索所有网址

如果您只想要第一个网址“// enclosure [1] / @ url”

如果您使用的是simpleXML

$result = $xml->xpath("//enclosure/@url");

如果你正在使用DOMDocument

$xpath = new DOMXpath($yourdomdocumentobject);
$result= $xpath->query("//enclosure/@url");

xpath“// @ url”也应该有用。有很多解决方案。