2014-01-10 36 views
0

我試圖加載一個xml節點<item id="n">,其中id$id中指定。simplexml對象選擇器不接受變量?

$xml=simplexml_load_file("news.rss"); 
foreach($xml->channel->item[$id]->attributes() as $a => $b) { 
    echo $a,'="',$b,"\"\n"; 
} 

將返回PHP Fatal error: Call to a member function attributes() on a non-object

但是,將第2行上的$id更改爲數字(如1)將使其正常工作。這裏發生了什麼? $id是一個整數。

回答

0

您不能通過像這樣的屬性訪問SimpleXMLElement元素。方括號中的數字表示元素索引(從零開始)。

如果你想找到屬性的元素,使用XPath這裏

foreach ($xml->channel->xpath("item[@id='$id']") as $item) { 
    foreach($item->attributes() as $a => $b) { 
     echo $a, '="', $b, '"', PHP_EOL; 
    } 
} 

演示 - http://ideone.com/Y6NGy2