你可以使用json_encode
andjson_decode
来添加你缺少的东西,因为json_encode
-ing 遵循一些特定的规则SimpleXMLElement
。
如果您对规则及其详细信息感兴趣,我已经写了两篇关于它的博客文章:
对您而言,可能更有趣的是第三部分,它展示了如何修改 json 序列化并提供您自己的格式(例如,保留属性):
它附带了一个完整的示例,这是代码的摘录:
$xml = '<xml>
<items>
<item abc="123">item one</item>
<item abc="456">item two</item>
</items>
</xml>';
$obj = simplexml_load_string($xml, 'JsonXMLElement');
echo $json = json_encode($obj, JSON_PRETTY_PRINT), "\n";
print_r(json_decode($json, TRUE));
JSON和数组的输出如下,注意属性是其中的一部分:
{
"items": {
"item": [
{
"@attributes": {
"abc": "123"
},
"@text": "item one"
},
{
"@attributes": {
"abc": "456"
},
"@text": "item two"
}
]
}
}
Array
(
[items] => Array
(
[item] => Array
(
[0] => Array
(
[@attributes] => Array
(
[abc] => 123
)
[@text] => item one
)
[1] => Array
(
[@attributes] => Array
(
[abc] => 456
)
[@text] => item two
)
)
)
)