將 JSON 轉為 XML:根元素、屬性與陣列

XML 需要單一根元素,並以重複元素表示串列。將帶 @ 前綴的鍵對應為屬性、把 #text 對應為元素文字,即可實現可逆轉換。

選擇根元素

XML 只允許一個根。如果 JSON 頂層只有一個鍵,就拿它當根元素;否則就把全部內容包進一個合成的根元素。

屬性與文字

帶 @ 前綴的鍵會變成屬性,#text 鍵會變成元素的文字內容,這是 XML 與 JSON 互轉的常見慣例,能保證轉換可逆。

陣列對應到重複元素

JSON 陣列不會變成一個元素 —— 每一項都會變成一個同名的獨立元素,因為 XML 用「重複元素」來表示串列。

跳脫

在文字中跳脫 & 與 <、>(屬性內的雙引號也要跳脫),並在最前面加上 XML 宣告,這樣輸出就是完整的文件。

命名空間與前綴

XML 的命名空間以 xmlns 或 xmlns:prefix 屬性出現,用來限定元素與屬性名。在貼近 JSON 的形式裡,把它們當作普通的 @xmlns / @xmlns:prefix 屬性鍵,並保留像 soap:Envelope 這樣的帶前綴名稱作為鍵 —— 大多數轉換器會原樣保留前綴。

自閉合與顯式空元素

JSON 的空值可以對應到自閉合標籤(<note/>)或成對的空標籤(<note></note>)。在 XML 中兩者等價,但下游解析器偶爾只認其中一種 —— 想要緊湊就用自閉合;對方很嚴格時就用顯式成對的形式。

往返時要注意的事

有些 XML 資訊在 JSON 裡沒有對應:屬性順序、註解、處理指示,以及空元素與缺漏元素的差別。如果你 JSON ↔ XML 來回一次,這些都會被丟掉 —— 任何牽涉到簽章正規化的場合,請不要使用往返過的 XML。

格式化、美化、驗證 XML

同一個轉換器也是 xml 格式化工具、xml 美化工具與 xml 驗證器:貼上任何 XML,按 To JSON 驗證是否良好構造,再按 To XML 以一致的縮排重新輸出。在編輯器沒有 xml 檢視或美化外掛時,這是不用裝任何本機工具就能格式化 xml 的最簡方式。