用于数组的XML会跳过属性值

时间:2019-03-21 08:22:27

标签: php xml

我正在使用PHP as将XML转换为数组

$xmlfile = file_get_contents($path);
$content= simplexml_load_string($xmlfile);
$data = json_decode(json_encode((array)simplexml_load_string($content,null,null,"http://www.w3.org/TR/html4/")), TRUE);

它提供数组,但跳过属性值

<xml>
  <add:location xmlns:add="http://www.w3.org/TR/html4/">
    <add:addresses>
      <add:houseNumber xml:lang="ENG" type="house">value</add:houseNumber>
      <add:city type="metro">value</add:city>
    </add:addresses>
  </add:location>
</xml>

输出:

Array
(
    [location] => Array
        (
            [addresses] => Array
                (
                    [houseNumber] => value
                    [city] => value
                )

        )
)

我还希望数组中包含属性值,以便可以针对各个节点获取类型为lang的值

1 个答案:

答案 0 :(得分:0)

您正在寻找这种东西

$xmlfile = file_get_contents($path);
$content= simplexml_load_string($xmlfile);
foreach($content->location->addresses->houseNumber->attributes() as $a => $b) {
 echo $a,'="',$b,"\"\n";
}

从根本上讲,您需要使用whatever->attributes()

处理属性

由于您希望所有内容都采用数组表示法,因此可以对其进行迭代,然后将它们推入数组,或应用json_encode json_decode,如您在示例中已经了解的那样。

希望这会有所帮助!