simplexml对象选择器不接受变量?

时间:2014-01-10 01:03:39

标签: php simplexml

我正在尝试加载xml节点<item id="n">,其中id中指定了$id

$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是一个整数。

1 个答案:

答案 0 :(得分: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