Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用Xpath从具有名称空间的XML中获取数据_Php_Xml_Xpath_Namespaces - Fatal编程技术网

Php 使用Xpath从具有名称空间的XML中获取数据

Php 使用Xpath从具有名称空间的XML中获取数据,php,xml,xpath,namespaces,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

我一直在用这个把头撞在砖墙上,所以我真的非常感谢你的帮助。我第一次使用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/>"; 
 }
但我还是不知道从现在起我需要做什么


事先非常感谢您的帮助。

您走上了正确的道路。您所需要做的就是使用名称空间编写一个xpath查询。比如:

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

一旦您注册了前缀,您就可以使用,例如
w:foo/w:bar
。请澄清这个问题。嗨@Gordon-我正在努力找出我需要什么来替换$price=$entry->price;在我上面的代码中,我们将为XML中的每个“项目”提供单独的w:price值。根据下面的建议,我使用了$price=$wxml->xpath('//w:price'),但这将返回一个数组-假设每个“项”中只有一个“w:price”节点,我认为它可以工作…在这种情况下,您必须使用。类似的问题请参见。@Gordon-非常好,谢谢。我现在使用$price=$entry->children('w',true)->price;这就成功了!谢谢@datasage。当我替换$price=$entry->price时;使用$price=$wxml->xpath('//w:price');在上面的代码中,我得到的输出是“Array”。然而,在每个“项目”中只有一个“w:price”节点,所以我认为它应该每次选择一个单独的价格,而不是一个数组?
$wxml->xpath ('//w:price')