XML轉JSON轉換器

將XML資料轉換為JSON。可以把老舊的XML API響應、SOAP報文或RSS/Atom訂閱源轉換為JSON——屬性歸入@attributes、文本歸入#text、重複元素變為陣列——全部在瀏覽器中完成。

使用提示

  • 帶有屬性的元素會被歸入 `@attributes` 物件中,與元素本身的文本或子元素分開存放。
  • 當一個元素同時包含屬性與子元素或文本時,文本部分會存入 `#text` 鍵,不會與屬性值混淆。
  • 同名的兄弟元素多次出現時會自動合併為陣列:3個 `` 標籤會變成含3個元素的陣列,只有1個時則保持為普通物件。
  • 不含屬性、文本、子元素的空元素(例如 ``)會被轉換為 `null`。
  • `xmlns` 等名稱空間字首不會被拆分,元素仍以 `ns:tag` 這樣的完整名稱作為鍵。

常見問題

每個元素的屬性會被歸入 `@attributes` 鍵下的物件中。例如 `` 會轉換為 `{"@attributes": {"category": "fiction"}, ...}`,與元素本身的值(文本或子元素)分開存放,不會混淆。

當同一父元素下存在多個同名的兄弟元素時,會自動合併為陣列。例如存在兩個 `` 標籤,轉換後 `book` 鍵的值就是一個含2個元素的陣列;只有一個時則保持為普通物件。

最常見的原因是結束標籤缺失或名稱不匹配(閉合標籤與開始標籤名稱不同)。此外XML要求只能有一個根元素,如果像 `......` 這樣在頂層並列多個元素也會導致轉換失敗。

本工具僅支援XML轉JSON這一個方向。如果需要單獨格式化或校驗JSON、XML,請使用本站的其他格式化工具。

名稱空間字首不會被拆分,元素仍以 `ns:tag` 這樣的形式作為鍵名。由於不會解析名稱空間(即字首與URI的對映關係),使用複雜名稱空間的XML轉換結果可能與預期不完全一致。
ツールくん

閒話 ― 為什麼XML與JSON之間沒有唯一的"標準答案"

與CSV轉JSON那種簡單的"一行對應一個物件"不同,XML與JSON之間並不存在唯一公認的轉換規則。XML中屬性、文本節點、子元素可以同時存在於一個元素裡,而JSON只有簡單的鍵值對,因此轉換時必須做出某種取捨。xml2json、xml-js、org.json等主流實現在如何表示屬性、文本與子元素並存時如何取捨等問題上,各自採用了不同的規則。

儘管如此,開發者仍然經常會遇到XML。基於SOAP的Web API、金融/政務/醫療行業中歷史悠久的系統間對接、RSS/Atom訂閱源、Android的佈局檔案等,都是XML至今仍作為標準格式使用的領域。將從這些遺留系統中取得的資料,接入現代化的、只認JSON的工具鏈(用jq處理,或在JavaScript中作為普通物件操作)——這樣的需求始終存在。

本工具採用的 `@attributes`/`#text` 規則,是一種常見且實用的選擇,而非大量使用特殊符號的極端記法。不帶屬性的葉子元素會直接轉換為其文本值,這樣簡單的配置值或RSS標題之類的常見場景就能得到易讀的普通JSON;而帶有屬性的元素則會被明確區分出來,只要看一眼轉換結果就能知道哪些值原本是屬性。