使用Xpath通过命名空间从XML获取数据

时间:2011-06-13 08:53:31

标签: php xml xpath namespaces

我一直在用砖头撞墙,所以非常感谢一些帮助。我第一次使用xpath并且让它完成我需要的大部分事情而没有任何问题。

以下是一个示例代码段:

 $urlw = "http://www.wahanda.com/rss/mobdeal.xml";
 $wf = gzopen ($urlw, 'r');
 $wxml = new SimpleXMLElement (fread ($wf, 1000000));

 foreach($wxml->xpath ('/rss/channel/item') as $entry) 
 {
    $price = $entry->price;
    echo $price . "<br/>"; 
 }

我的问题是我当前使用的Feed有名称空间声明,所以“price”节点实际上是“w:price”。我想要使​​用的一些节点以“w:”为前缀,而其他节点则不是。因此,我的代码无法获取前缀节点的内容。有人可以告诉我我是如何解决这个问题的?从阅读中我添加了以下内容:

 $wxml->registerXPathNamespace('w', 'http://www.wahanda.com/ns/1.0');

但仍不确定我需要做什么。

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

你走在正确的轨道上。您需要做的就是使用命名空间编写xpath查询。类似的东西:

$wxml->xpath ('//w:price')