X

PHP: XML to JSON 轉換程式(xml2json)

為了減少前端的負擔, 於是決定要將 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:

  1. an empty element
  2. an element with pure text content
  3. an empty element with attributes
  4. an element with pure text content and attributes
  5. an element containing elements with different names
  6. an element containing elements with identical names
  7. 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), 程式如下:

Tsung: 對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.
Related Post