為了減少前端的負擔, 於是決定要將 XML 轉 JSON 的工作轉到後端去做, 但是找了許久找不到 XML to JSON 的程式, 於是就自己寫了轉換程式.
基本上比想像中麻煩一點, 沒想到還有 @, # 等等一些怪怪的規則~ 所以程式寫起來比較亂一點.
此程式就是照此篇文章規則寫的: Converting Between XML and JSON
有 Javascript 版可以 線上轉換 參考: XML to JSON – a converter
照上述文章, 將規則轉載過來.
A single structured XML element might come in seven flavors:
- an empty element
- an element with pure text content
- an empty element with attributes
- an element with pure text content and attributes
- an element containing elements with different names
- an element containing elements with identical names
- an element containing elements and contiguous text
The following table shows the corresponding conversion patterns between XML and JSON.
Pattern | XML | JSON | Access |
1 | <e/> | "e": null | o.e |
2 | <e>text</e> | "e": "text" | o.e |
3 | <e name="value" /> | "e":{"@name": "value"} | o.e["@name"] |
4 | <e name="value">text</e> | "e": { "@name": "value", "#text": "text" } | o.e["@name"] o.e["#text"] |
5 | <e> <a>text</a> <b>text</b> </e> | "e": { "a": "text", "b": "text" } | o.e.a o.e.b |
6 | <e> <a>text</a> <a>text</a> </e> | "e": { "a": ["text", "text"] } | o.e.a[0] o.e.a[1] |
7 | <e> text <a>text</a> </e> | "e": { "#text": "text", "a": "text" } | o.e["#text"] o.e.a |
再來下述三個 function 就是做 XML2JSON 的程式(此程式寫完尚未經過完整測試, 若有任何問題, 還請回報跟我說, 謝謝):
如果不想看程式的, 可以直接抓取後(xml2json.phps), 用以下方法直接使用即可.
$json = Xml2Json($xml_data); echo $json;
此程式經由 Leeym 大大的大力協助 和 Joseph 的大力測試下, 發現了不少問題, 所以把 v1 版本換掉, 以後請抓 v2 版本.
此版本整個 tgz 也附上測試的程式, 執行方法: php xml2json.php 1.xml
另一個常用的是 array2json, 正好看到有個站有寫好的, 轉載過來(轉載自: array2json() - Convert PHP arrays to JSON), 程式如下: