嗨,这里有我的xml文件:(文件)
<?xml version="1.0" encoding="utf-8"?>
<ArrayOfItem xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://nts-de-osm1-pxc/webservices/">
<Item xmlns:q1="http://systinet.com/wsdl/com/osm/webservices/service/" xsi:type="q1:Document">
<q1:attributes>
<q1:Attribute>
<q1:dataDictionary xsi:nil="true" />
<q1:dataType>string</q1:dataType>
<q1:displayName>AEND_DATUM</q1:displayName>
<q1:key>false</q1:key>
<q1:name>AEND_DATUM</q1:name>
<q1:searchable>true</q1:searchable>
<q1:userAttribute>true</q1:userAttribute>
<q1:value>10.05.10</q1:value>
</q1:Attribute>
<q1:Attribute>
<q1:dataDictionary xsi:nil="true" />
<q1:dataType>string</q1:dataType>
<q1:displayName>AEND_PRUEF_DATUM</q1:displayName>
<q1:key>false</q1:key>
<q1:name>AEND_PRUEF_DATUM</q1:name>
<q1:searchable>true</q1:searchable>
<q1:userAttribute>true</q1:userAttribute>
<q1:value>10.05.10</q1:value>
</q1:Attribute>
</q1:attributes>
</Item>
</ArrayOfItem>
Run Code Online (Sandbox Code Playgroud)
这是我的代码
$xml = simplexml_load_file($thefile);
print_r($xml);
Run Code Online (Sandbox Code Playgroud)
这是输出
SimpleXMLElement Object
(
[Item] => SimpleXMLElement Object
(
)
)
Run Code Online (Sandbox Code Playgroud)
为什么这是空的?
Jos*_*vis 10
不要使用print_r()或var_dump()来检查SimpleXMLElement,它们不一定适用于它们,因为SimpleXML在场景后面使用了很多魔法.相反,看看会有什么asXML()回报.
在您的情况下,它不显示,<q1:attributes/>因为它们不在同一名称空间中.
要访问这些命名空间节点,有许多不同的方法,其中大部分都是在Stack Overflow中讨论的.如果您无法解决问题,请打开一个新问题,因为主题不同.以下是访问这些元素的3种方法:
$ArrayOfItem->Item->children("http://systinet.com/wsdl/com/osm/webservices/service/");
$ArrayOfItem->Item->children('q1', true);
$ArrayOfItem->Item->xpath('//q1:Attribute');
Run Code Online (Sandbox Code Playgroud)