xml 元素中的属性不在 simplexml 数组中

Posted

技术标签:

【中文标题】xml 元素中的属性不在 simplexml 数组中【英文标题】:Attributes from xml element not in simplexml array 【发布时间】:2016-01-01 15:48:29 【问题描述】:

我正在尝试读取 REA-XML 文件并使用 simplexml 将 xml 转换为数组

$xml = simplexml_load_string($data) or die("Error: Cannot create object");

XML 中有一个部分如下所示:

<images>
    <img id="a" modTime="2009-01-01-12:30:00" url="http://image.jpg" format="jpg"/>
    <img id="m" modTime="2009-01-01-12:30:00" url="https://image.jpg" format="jpg"/>
</images>

当转换为数组时,会创建一个额外的数组元素“@attributes”,其中包含 modTime 等。

但是,在同一个 XML 中,同一个级别:

<landDetails>
        <area unit="square">80</area>
        <frontage unit="meter">20</frontage>
        <depth unit="meter" side="rear">40</depth>
        <crossOver value="left"/>
</landDetails>

“单位”属性完全缺失, crossOver 中“value”的值位于“@attributes”数组中,但 var_dump 中完全缺少“unit”的其他三个项目

为什么单位值不显示在@attribute 数组或landDetails 部分的其他任何地方?

完整示例 XML:

http://rea-new-help.realestate.com.au.s159598.gridserver.com/wp-content/uploads/2013/05/rental_sample.xml

【问题讨论】:

【参考方案1】:

快速指针: php SimpleXML attributes are missing

基本上,simplexml和print_r / var_dump不要播放:如果你遍历对象树,例如, $xml-&gt;area 你会看到对象如实渲染:

SimpleXMLElement Object ( [@attributes] => Array ( [unit] => square ) [0] => 80 )

对于存在属性和内容的元素尤其如此。

【讨论】:

以上是关于xml 元素中的属性不在 simplexml 数组中的主要内容,如果未能解决你的问题,请参考以下文章

simpleXML技术解析xml文件(php)

使用属性包含斜杠的 simplexml_load_string 将 XML 转换为数组

PHP 5 SimpleXML 函数

SimpleXML:选择具有特定属性值的元素

SimpleXML 属性到数组

PHP SimpleXML解析具有多个属性的元素