simplexml已将rss feed转换为对象,并且元素非常容易引用。是前缀元素(例如<this:that>
)引用与对象中的非前缀元素($item->this
)相同的方式。
我在php.net手册中找不到任何信息。
答案 0 :(得分:2)
不完全。当您对表示命名空间XML的对象执行print_r()
或var_dump()
时,您会注意到所有命名空间节点都缺失。有几种方法可以获得命名空间节点。一种方法是将registerXPathNamespace()与xpath()结合使用:
$xml = simplexml_load_file('some/namespaced/xml/file.xml');
$xml->registerXPathNamespace('prefix', 'http://Namespace/Uri/Here');
$xml->xpath('//prefix:node'); //get all <prefix:node> XML nodes.
另一种方法是使用children()来获取子节点:
$xml = simplexml_load_file('some/namespaced/xml/file.xml');
$xml->children('prefix', true); //get all nodes with the 'prefix' prefix that are direct descendants of the root node.
$xml->someNode->children('blah', true); //get all nodes with the 'blah' prefix that are direct descendants of <someNode>
答案 1 :(得分:0)
您要找的是registerXPathNamespace()。您注册每个命名空间,然后就可以像平常一样使用每个节点。