微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php – SimpleXML和print_r() – 为什么这是空的?

嗨,这里有我的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>

这是我的代码

$xml = simplexml_load_file($thefile);
print_r($xml);

这是输出

SimpleXMLElement Object
(
    [Item] => SimpleXMLElement Object
        (
        )

)

为什么这是空的?

解决方法:

不要使用print_r()或var_dump()来检查SimpleXMLElement,它们不一定适用于它们,因为SimpleXML在场景后面使用了很多魔法.相反,看看asXML()返回什么.

在您的情况下,它不会显示< q1:attributes />因为它们不在同一名称空间中.

编辑

要访问这些命名空间节点,有许多不同的方法,most of them discussed here at Stack Overflow.如果你无法解决,请打开一个新问题,因为主题不同.以下是访问这些元素的3种方法

$ArrayOfItem->Item->children("http://systinet.com/wsdl/com/osm/webservices/service/");
$ArrayOfItem->Item->children('q1', true);
$ArrayOfItem->Item->xpath('//q1:Attribute');

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐