首页  >  文章  >  后端开发  >  为什么在具有命名空间的 XML 文件上使用 print_r() 时我的 SimpleXML 对象为空?

为什么在具有命名空间的 XML 文件上使用 print_r() 时我的 SimpleXML 对象为空?

DDD
DDD原创
2024-10-27 06:27:29870浏览

Why is my SimpleXML Object Empty When Using print_r() on an XML File with Namespaces?

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

使用 simplexml_load_file() 加载 XML 文件,然后用 print_r($xml) 可能会让您想知道为什么它显示为空:

<code class="xml"><ArrayOfItem>
  <Item>
    <attributes>
      <Attribute>
        <dataType>string</dataType>
      </Attribute>
    </attributes>
  </Item>
</ArrayOfItem></code>
<code class="php">$xml = simplexml_load_file('myfile.xml');
print_r($xml);</code>
结果:

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

)

为什么这是空的?

原因是

print_r() 不会输出 节点中元素的内容,因为它们位于不同的 XML 命名空间。

解决方案:

要访问和输出这些元素的内容,请使用专门设计用于处理 XML 命名空间的方法,例如

SimpleXMLElement: :children()SimpleXMLElement::xpath()。例如:

以上是为什么在具有命名空间的 XML 文件上使用 print_r() 时我的 SimpleXML 对象为空?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn