若要在 VS Code 中將 XML 轉換為 JSON,請從編輯器複製一份格式正確的 XML 文件,貼到瀏覽器中的 XML to JSON 轉換器,選擇縮排方式,進行轉換,再將 JSON 貼回 VS Code 檔案。 這種以瀏覽器進行的交接方式可讓 VS Code 繼續作為編輯器,而轉換作業則在瀏覽器本機執行。此工具最多可接受 200,000 個字元,會產生具決定性的 JSON,且不會上傳來源內容或使用伺服器處理。其輸出遵循明確的慣例:根元素會成為最上層索引鍵,屬性會 grouping 在 @attributes 底下;當元素同時具有屬性或子元素時,直接文字內容會移至 #text;重複的同層元素名稱則會依文件順序轉為陣列。這些慣例實用且容易預測,但並非官方通用的 XML-to-JSON 對應標準。瀏覽器原生 XML DOMParser 會執行語法解析,而顯示的解析錯誤可避免工具傳回部分輸出。轉換前必須移除所有 DOCTYPE 宣告,因為此工具會阻擋該宣告,且不會對結構描述、DTD、外部實體、命名空間資源、樣式表或其他遠端內容發出網路要求。當產生的物件結構符合接收系統時,此工作流程適合用於 API 範例、組態檢查、測試固定資料及小型遷移。

在 VS Code 工作流程中將 XML 轉換為 JSON
- 在 VS Code 中開啟並複製 XML。 開啟 XML 檔案,選取包含根元素在內的完整文件,然後複製選取內容。貼上之前請移除所有 DOCTYPE 宣告,因為轉換器刻意拒絕該宣告。輸入內容必須是一份完整的 XML 文件,而非片段或數份個別文件的集合。
- 將來源內容貼到瀏覽器轉換器。 開啟 XML to JSON 轉換器頁面,將複製的 XML 貼到輸入區。確認來源內容不超過 200,000 個字元。轉換會在瀏覽器本機進行,因此 XML 不會傳送到伺服器。
- 選擇 JSON 縮排方式。 依要檢視或複製的格式,選擇緊湊格式、兩個空格的縮排或四個空格的縮排。此選擇只會改變 JSON 的版面配置,不會改變其底層物件結構。
- 選擇 Convert to JSON。 轉換器會解析 XML,並使用選定的縮排方式序列化產生的物件。如果 XML 含有解析錯誤,工具會清楚顯示並拒絕該內容,也不會傳回部分 JSON 結果。
- 檢查轉換規則。 使用輸出之前,請確認根索引鍵、屬性位置、文字位置及重複子元素的處理方式。特別是確認應用程式預期屬性位於 @attributes 底下、文字位於 #text 底下,或重複的同層元素應轉為陣列。
- 將 JSON 複製到 VS Code。 在編輯器中開啟或建立 JSON 檔案,貼上轉換結果並儲存。將轉換結果視為可正式使用之前,請將儲存的結構與接收應用程式的已知 payload 進行比較。
各項 XML 建構的轉換結果
XML 與 JSON 並不存在通用的一對一對應,因此轉換器採用明確的慣例,而不宣稱具備官方轉換標準。下列規則會決定所產生物件的形狀,並應在 JSON 納入專案之前加以檢查。
| XML 輸入 | JSON 輸出 |
|---|---|
| 根元素 | 最上層 JSON 索引鍵 |
| 元素屬性 | grouping 在 @attributes 物件中 |
| 僅含文字的元素 | JSON 字串 |
| 同時具有屬性或子元素的元素所包含的直接文字 | 儲存在 #text 底下 |
| 重複的同層元素名稱 | 依文件順序排列的陣列 |
| 單一相符的子元素 | 單一值,而非只有一個項目的陣列 |
| 具有命名空間前綴的元素或屬性名稱 | 保留前綴 |
| 空元素 | 空字串,除非該元素帶有屬性 |
| CDATA | 提供文字內容 |
| 註解與處理指令 | 不會複製到 JSON |
混合內容會採用精簡表示方式:合併後的直接文字會置於 #text 底下,而子元素仍可依名稱取得。該表示方式不會保留文字與子節點之間完全相同的交錯順序。命名空間前綴會保留在元素及屬性名稱中,但轉換器不會擷取命名空間資源。註解與處理指令也不包含在產生的 JSON 表示方式中。
整合之前檢查數值與結構
請先從根索引鍵開始,再逐層檢查最可能影響整合的 4 項決策:屬性是否已移至 @attributes 底下、結構化文字是否出現在 #text 底下、單一子元素是否仍為單一值,以及重複子元素是否形成陣列。在 XML 中看似數值的內容,在 JSON 中仍是字串。轉換器不會推斷數字、布林值或 null,因此可避免具有前導零的數值等識別碼在無聲無息間改變含義。
這種行為有助於保留 XML 的詞彙值,但應用程式可能預期不同的契約。另一套 XML 程式庫可能使用不同的前綴、將每個子元素都置於陣列中、保留註解、強制轉換數值及看似布林值的文字,或將命名空間分別表示。請將產生的 JSON 與目標端點或服務的現有回應進行比較。如果要修改或合併結果,如何檢查 JSON 格式是否正確可在檔案被使用前提供獨立的語法檢查。
解決遭拒絕或不符合預期的輸出
轉換器的解析階段使用瀏覽器原生的 DOMParser API,而底層 XML 語法則由 W3C XML 1.0 定義。當結果遭到拒絕或不符合預期時,請依下列差異逐一處理:
- 解析器回報錯誤。 檢查 XML 中是否有解析器無法接受的語法,包括未配對的標籤、無效的屬性引號,或超過一個根元素。修正來源內容後再次轉換;工具不會傳回解析失敗後的部分 JSON。
- 來源內容含有 DOCTYPE。 轉換前請移除該宣告。轉換器不會擷取結構描述、DTD、外部實體或其他遠端資源,因此無法在作業期間解析這些相依性。
- 屬性並非一般的同層欄位。 請查看元素的 @attributes 物件內部。屬性會 grouping 在該處,而不是放在元素子索引鍵旁邊。
- 預期欄位中缺少文字。 當元素具有屬性或子元素時,請檢查 #text。僅含文字的元素則會直接以字串表示。
- 預期為陣列的位置只有一個子元素。 轉換器會將單一相符子元素保留為單一值,只有重複的同層元素名稱才會建立陣列。請更新接收端的契約,或刻意將資料正規化。
- 看似數值或布林值的內容仍保留引號。 這是刻意設計。請在已知商業含義與接收契約的應用程式碼中進行任何必要的類型轉換。
為較大型或正式環境的 XML 選擇合適的工作流程
瀏覽器轉換器適合範圍受限的單一文件轉換及探索性作業。其定義的來源上限為 200,000 個字元,而物件模型刻意採用明確方式,而非依據結構描述推論。當文件或工作流程超出此範圍時,請使用專用的 XML 解析器。
| 需求 | 適用工作流程 |
|---|---|
| 單一 API 範例、組態檔、測試固定資料或小型遷移 | 物件結構合適時,使用以瀏覽器為基礎的 XML to JSON 轉換器 |
| 超過 200,000 個字元 | 專用解析器 |
| 串流轉換 | 專用解析器 |
| 結構描述驗證 | 專用解析器 |
| 無損保留混合內容 | 專用解析器 |
| 正式環境的擷取、轉換及載入工作流程 | 使用專用解析器且受版本控制的應用程式 |
請勿只為了將文件大小降到轉換器限制以下,就任意分割 XML 文件,因為片段可能改變原始資料的含義。對於定期重複的正式環境轉換,請將解析器與對應規則置於受版本控制的應用程式中,以便明確測試輸入契約、類型處理及輸出形狀。
讓 VS Code 交接流程隨時可供檢查
- 當轉換結果支援某項工作流程或固定資料時,請將原始 XML 與產生的 JSON 儲存至專案中的適當位置。
- 記錄產生的 JSON 使用轉換器的 @attributes 與 #text 慣例。
- 將根名稱、子元素陣列、文字欄位、命名空間前綴及數值類型與接收應用程式的契約進行比較。
- 使用瀏覽器轉換器處理範圍受限的樣本或組態檢查,再將正式環境規模的需求移至專用且可測試的解析器工作流程。
若要執行確切的 VS Code 工作,實際步驟仍然很簡單:從編輯器複製一份格式正確的 XML 文件,貼到本機瀏覽器轉換器,移除所有 DOCTYPE 宣告,選擇縮排方式,選擇 Convert to JSON,檢查明確的物件慣例,再將結果複製回 JSON 檔案。
如果您正在比較不同選項,ANSI 逸出序列中是否需要 ANSI 色碼?有更詳細的說明。