来自xml元素的属性不在simplexml数组

时间:2015-10-05 03:43:20

标签: php xml simplexml

我正在尝试阅读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>

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

为什么单位值不会显示在@attribute数组中,也不显示在landDetails部分的其他任何位置?

完整示例XML:

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

1 个答案:

答案 0 :(得分:2)

Quck指针: php SimpleXML attributes are missing

基本上,SimpleXML和print_r / var_dump不能很好地发挥作用:如果您遍历对象树,例如$xml->area您会看到忠实呈现的对象:

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

对于同时具有属性和内容的元素尤其如此。