我正在使用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的值
答案 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
,如您在示例中已经了解的那样。
希望这会有所帮助!