使用Xpath从命名空间为的XML中获取数据


Using Xpath to get Data from XML with Namespace

我一直在用这个撞墙,所以非常感谢你的帮助。我是第一次使用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/>"; 
 }

我的问题是,我目前使用的提要有命名空间声明,所以"price"节点实际上是"w:price"。我想使用的一些节点以"w:"为前缀,而其他节点则没有。因此,我的代码无法获取带前缀的节点的内容。有人能告诉我如何解决这个问题吗?通过阅读,我添加了以下内容:

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

但仍然不确定从现在开始我需要做什么。

事先非常感谢你的帮助。

你走在了正确的轨道上。您所需要做的就是使用名称空间编写一个xpath查询。类似于:

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