【发布时间】:2012-06-30 16:58:04
【问题描述】:
我在 PHP 页面中收到一个 JSON 字符串:
$JSON = $_POST['submit'];
$Array = json_decode($JSON);
$xml = arrayToXML($Array,"","root");
echo $xml;
arrayToXML 是我为此目的而创建的函数。
该功能运行良好,但我想解决几个问题:
1.重复标签:
假设我们有一个 JSON 字符串,例如
{element:[{sub1:xxxx,sub2:xxx},{sub1:xxxx,sub2:xxx},{sub1:xxxx,sub2:xxx}]}
相应的 XML 会是这样的
<element>
<sub1>xxxx</sub1>
<sub2>xxx</sub2>
</element>
<element>
<sub1>xxxx</sub1>
<sub2>xxx</sub2>
</element>
<element>
<sub1>xxxx</sub1>
<sub2>xxx</sub2>
</element>
但是我的函数的递归复制了第一个标签和最后一个标签。我可以明白为什么会这样,但我无法找到解决它的方法。所以我通过 preg_replacing 重复标签解决了这个问题。有没有更好的方法来解决这个问题?这几天我一直在思考这个问题。
2。缩进:
我希望该函数以一种花哨的人类可读方式生成 xml,所以我在相邻标签之间放置了换行符,但是如何定义正确的嵌套缩进?
我试过这个:
$xml = preg_replace("/(\t*)(<\/?.+>)(<\/?.+>)/","$2\n$1\t$3",$xml);
但结果完全错了。什么是正确的?
非常感谢。
【问题讨论】:
-
您可以使用PEAR::XML_Serializer 将 json 转换为 XML。首先,将json转换为对象,然后将对象转换为XML
-
函数应该正确链接...