如何获取RSS XML子对象值

时间:2014-12-01 13:59:45

标签: php xml-parsing

我有一个包含以下格式的rss xml数据..

<rss version="2.0"
  xmlns:ht="http://www.yahoo.com/gold"
  <channel>
    <item>
      <title>Title 1</title>
      <description>description 1</description>
      <ht:price>$22</ht:price>
   </item>
 </channel>

所以请提供如何捕获子对象,我已经尝试了

 $url = "http://www.yahoo.com/gold/rss/xml";
 $xml = simplexml_load_file($url);
 for ( $i = 0; $i < 10; $i++ ){
      $title = $xml->channel->item[$i]->title;
      $description = $xml->channel->item[$i]->description;
      $goldprice =  $xml->channel->item[$i]->children('http://www.yahoo.com/gold'); 
      $itemprice = $goldprice->price;

echo "</br>" ;
echo $title;
echo "</br>" ;
echo $description;
echo "</br>" ;
echo $itemprice;
echo "</br>" ;

但我收到错误致命错误:在...中的非对象上调用成员函数children()

请提供解决方案如何解决?

谢谢,

1 个答案:

答案 0 :(得分:1)

您所展示的内容显然不是您正在使用的完整XML,但这是SimpleXML的一个人为举例:

$xml = '<root><title>Title 1</title><description>Description 1</description><price>$22</price></root>';
//      ^^^^^^                                                                                ^^^^^^^
//      added to make this example work

$doc = simplexml_load_string($xml);
echo $doc->title; // Title 1
echo $doc->description; // Description 1
echo $doc->price; // $22

有比SimpleXML更好的工具,例如DOMDocument;如果你有时间,我建议调查一下。