XML 與 JSON 互轉指南:設定檔與 API 資料格式轉換

JSON(更新於 2026年6月19日)

XML 與 JSON 的核心差異

特性 XML JSON
資料格式 標籤標記 鍵值對
屬性 有(<node attr="val"> 無(屬性轉為欄位)
命名空間 有(xmlns
註解 有(<!-- -->
陣列表示 隱式(同名元素重複) 顯式([]
文字節點 混合內容(標籤+文字) 純字串值

XML 更適合文件型資料(SVG、HTML、設定),JSON 更適合結構化資料(API 回應)。


XML 屬性如何對映到 JSON

XML 元素可以同時有屬性和文字內容,這是轉換的難點:

簡單元素

<person name="張三" age="30"/>
{
  "person": {
    "@name": "張三",
    "@age": "30"
  }
}

約定用 @ 前綴表示 XML 屬性,這是最常見的轉換規則。

混合內容(屬性 + 文字)

<price currency="CNY">68.00</price>
{
  "price": {
    "@currency": "CNY",
    "#text": "68.00"
  }
}

#text 表示元素的文字內容,與屬性區分。


陣列偵測:最容易踩的坑

XML 中陣列是隱式的——同名元素重複出現就是陣列:

<books>
  <book>三體</book>
  <book>活著</book>
</books>
{
  "books": {
    "book": ["三體", "活著"]
  }
}

問題:只有一個元素時,XML 看不出是陣列:

<books>
  <book>三體</book>
</books>

可能轉為:

{
  "books": {
    "book": "三體"
  }
}

解決:使用 XML↔JSON 工具 時,勾選「強制陣列」選項,指定哪些元素始終作為陣列處理。


命名空間處理

XML 命名空間在 JSON 中沒有直接對應:

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
  <soap:Body>
    <m:GetPrice xmlns:m="http://example.com">
      <m:Item>123</m:Item>
    </m:GetPrice>
  </soap:Body>
</soap:Envelope>

常見處理策略:

策略 說明 適用場景
保留前綴 soap:Body"soap:Body" SOAP/WSDL 處理
去除前綴 soap:Body"Body" 簡單場景,無衝突
使用命名空間鍵 {soap}Body 需要區分同名的不同命名空間

使用 XML 格式化工具 先整理 XML,再進行轉換。


使用 XML↔JSON 工具

第一步:開啟工具

造訪 XML↔JSON 工具,選擇轉換方向。

第二步:輸入來源資料

  • XML → JSON:貼上 XML 字串
  • JSON → XML:貼上 JSON 字串

可先用 JSON 格式化XML 格式化 整理輸入。

第三步:設定轉換選項

選項 說明
屬性前綴 屬性對映為 @attr 還是 $attr
文字節點鍵 文字內容對映為 #text 還是 _text
強制陣列 指定始終作為陣列的元素名
命名空間 保留/去除/轉換

第四步:執行轉換

點擊「轉換」,檢視結果並複製。


實戰場景

設定檔遷移

許多舊專案使用 XML 設定(Spring、Maven),新專案傾向 YAML/JSON:

pom.xml → package.json(依賴資訊)
spring-config.xml → application.json(Bean 設定)

SOAP API 轉 REST

SOAP 回應是 XML,需要轉為 JSON 供前端使用:

SOAP XML 回應 → JSON → 前端渲染

SVG 元資料提取

SVG 是 XML 格式,提取元資料轉為 JSON 便於程式處理:

<svg width="100" height="100"> → {"svg": {"@width": "100", "@height": "100"}}

JSON 轉 XML 注意事項

JSON 轉 XML 時需要注意:

注意點 說明
根元素 JSON 必須有唯一的根鍵
鍵名合法性 XML 標籤名不能以數字開頭,不能含空格
陣列包裝 JSON 陣列需要指定包裝元素名
特殊字元 <>& 需要轉義為實體

常見問題

問題 原因 解決
單元素未轉為陣列 XML 無法區分單元素和陣列 勾選「強制陣列」
屬性遺失 轉換規則未設定屬性前綴 檢查屬性前綴設定
命名空間衝突 不同命名空間有同名元素 保留命名空間前綴
JSON 轉報錯 鍵名不合法 修改鍵名符合 XML 規範
混合內容遺失 文字節點鍵未正確對映 檢查 #text 設定

總結

XML 與 JSON 互轉是資料格式遷移和 API 整合中的常見需求。理解屬性對映、陣列偵測、命名空間三大核心問題,是正確完成轉換的關鍵。XML↔JSON 工具 提供靈活的轉換設定,配合 JSON 格式化XML 格式化 建構完整的格式轉換工作流。

#XML#JSON#格式转换#API#配置