不接受变量的 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是一个整数。

你不能像这样按属性访问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

最新更新