我正在尝试从XML文件中检索一些值:
<lx:message xsi:schemaLocation="http://api.latx.corp.netapp.com/ws/schema/1.0/wsmessage.xsd">
<lx:header>
<lx:status>success</lx:status>
</lx:header>
<lx:results>
<lx:perf_data>
<lx:perfid>331070</lx:perfid>
<lx:filepath>/x/eng/cs-data1/latx/prd/20151009_uploads/akshayp/AIo.data</lx:filepath>
<lx:filename>AIo.data</lx:filename>
<lx:datatype>perf8</lx:datatype>
<lx:userid>akshayp</lx:userid>
.
.
.
我想检索<lx:userid>
我的代码是:
<?php
$response = file_get_contents('http://www.myapi.com/myxml.xml');
$response = new SimpleXMLElement($response);
echo $response->{'lx:message'}->{'lx:results'}->{'lx:perf_data'}->{'lx:userid'};
?>
但我得到的错误如下:
尝试在第116行的C:\ wamp \ www \ 1 \ simple.php中获取非对象的属性
有人可以帮忙,我已经尝试了很多方法来解决问题,但仍然失败了。
感谢。
答案 0 :(得分:1)
使用SimpleXMLElement::getNamespaces获取命名空间uri,然后使用SimpleXMLElement::children获取&#34;进入&#34;这个命名空间。
<?php
$response = new SimpleXMLElement( data() );
$namespaces = $response->getNamespaces(true);
$nsLX = $namespaces['lx'];
echo $response->children($nsLX)->results->perf_data->userid;
function data() {
return <<< eox
<lx:message xmlns:lx="foo">
<lx:header>
<lx:status>success</lx:status>
</lx:header>
<lx:results>
<lx:perf_data>
<lx:perfid>331070</lx:perfid>
<lx:filepath>/x/eng/cs-data1/latx/prd/20151009_uploads/akshayp/AIo.data</lx:filepath>
<lx:filename>AIo.data</lx:filename>
<lx:datatype>perf8</lx:datatype>
<lx:userid>akshayp</lx:userid>
</lx:perf_data>
</lx:results>
</lx:message>
eox;
}