我在 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);
但结果完全错了。什么是正确的?
非常感谢。