Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.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 使用simplexml帮助导航具有多个名称空间的XML文件_Php_Xml_Simplexml_Xml Namespaces - Fatal编程技术网

Php 使用simplexml帮助导航具有多个名称空间的XML文件

Php 使用simplexml帮助导航具有多个名称空间的XML文件,php,xml,simplexml,xml-namespaces,Php,Xml,Simplexml,Xml Namespaces,我正在开发一个从XML文件收集气象数据的程序。特别是,我想浏览一个文件,比如下面引用的文件,并拉出特定位置的风统计数据 位置在元素中观察标记的元数据中用name=“station\u name”标识。风数据包含在观测->要素中 使用多个名称空间似乎妨碍了我对如何使用simplexml解析xml文件的有限了解 我试图解析的xml文件是: 我已将此测试缩减为一个观察值(如下所示): 2011-05-07T23:00:00.000Z 2011-05-07T23:56:09.099Z 50.63333

我正在开发一个从XML文件收集气象数据的程序。特别是,我想浏览一个文件,比如下面引用的文件,并拉出特定位置的风统计数据

位置在元素中观察标记的元数据中用name=“station\u name”标识。风数据包含在观测->要素中

使用多个名称空间似乎妨碍了我对如何使用simplexml解析xml文件的有限了解

我试图解析的xml文件是:

我已将此测试缩减为一个观察值(如下所示):


2011-05-07T23:00:00.000Z
2011-05-07T23:56:09.099Z
50.63333333333333 -97.05
这就是我到目前为止所拥有的,而且它正式地让我一事无成

    <?php
$xml = simplexml_load_file("weather.xml");
foreach($xml->item as $item){
    $collection = $item->children("http://www.opengis.net/om/1.0");
}

print_r($collection->member);

    ?>


尝试使用语言通过SimpleXMLElement中的方法查询数据。

最后,我使用str\u replace替换原始xml字符串中的om:。这消除了应用名称空间的需要,并使使用simplexml导航xml变得简单。

好的,我尝试过使用xpath,但似乎没有任何效果。我有以下代码:
$xml=simplexml\u load\u文件(“weather.xml”);$xml->registerXPathNamespace(“om”http://www.opengis.net/om/1.0"); $elements=$xml->xpath(“//om:Observation”);$location=$xml->xpath(“/om:ObservationCollection/om:member/om:Observation/om:metadata”);$test[0]=$location->xpath(“/set”);foreach($k=>$v){echo“
$k=$v”;}
这至少为我提供了一个$elements数组,但我并没有从$test中得到任何东西。“/set”表示文档根中的“set”,请尝试使用“/set”甚至“set”作为xpath。还有,为什么要将结果分配给$test[0],为什么不仅仅是$test?没有理由使用$test[0],我相信这是我假设$test返回数组时的遗留问题。当我执行$location->xpath(“./set”)时,我得到以下错误:致命错误:在simple_xml.php的第9行对非对象调用成员函数xpath()。如果执行$xml->xpath(“./set”),则不会向页面输出任何内容。您将使用什么代码从xml文件返回的value属性?讽刺!当我从web服务中获取数据时,就像我前几周编写的last.fm脚本一样,如果根节点没有临时名称空间,我总是使用正则表达式向其添加临时名称空间,这样在合并文档和使用XSLT时,我就可以很容易地区分元素。
    <?php
$xml = simplexml_load_file("weather.xml");
foreach($xml->item as $item){
    $collection = $item->children("http://www.opengis.net/om/1.0");
}

print_r($collection->member);

    ?>