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_replace することでこれを解決しました。これを修正するより良い方法はありますか?これについて考えていたのは本当に数日でした。
2.インデント:
関数が人間が読める形式で xml を生成するようにしたかったので、隣接するタグの間に改行を入れましたが、正しいネストされたインデントを定義するにはどうすればよいでしょうか?
私はこれを試しました:
$xml = preg_replace("/(\t*)(<\/?.+>)(<\/?.+>)/","$2\n$1\t$3",$xml);
しかし、完全に間違っていることが判明しました。正しいものは何でしょう?
どうもありがとう。