Notepad++ 無法原生將 XML 轉換為 JSON —— 編輯器僅將 XML 檔案作為純文字開啟 —— 但將其與基於瀏覽器的 XML to JSON Converter 搭配使用,即可在本地產生可預期的 JSON,並保留屬性、文字與重複元素。其取捨在於 Notepad++ 並沒有內建解析器能將您的 XML 轉為 JSON 樹狀結構,因此多數工作流程會將文件複製到專門的轉換器中。基於瀏覽器的 XML to JSON Converter 正是為這種交接而設計:您從 Notepad++ 貼上一份格式正確的 XML 文件,選擇縮排格式,即可獲得保留屬性、命名空間與重複同層元素的確定性 JSON 表示。解析完全在您的瀏覽器中透過 MDN DOMParser 說明文件所描述的原生 DOMParser 進行,因此原始 XML 從不離開您的機器。由於 XML 與 JSON 之間並無通用的逐一對應對映,該工具採用明確的慣例:以 @attributes 代表屬性、以 #text 代表直接字元資料,您應將此契約與接收系統實際所期待的內容進行比對。

how to convert xml to json in notepad++
如何在 Notepad++ 中將 XML 轉換為 JSON

為何僅靠 Notepad++ 無法可靠地將 XML 轉換為 JSON

當您要求 Notepad++ 轉換內容時,它對您文件的結構並無感知 —— 尋找與取代是針對字元樣式運作,而非 XML 樹,正是這個落差使得通常需要獨立的轉換器。編輯器將每個緩衝區皆視為文字,這讓編輯保持快速,卻也排除了在同一工作階段內自動進行 XML 轉 JSON 的任何機會。

Notepad++ 內最常見的替代方案是 XML Tools 外掛,它透過外掛選單新增 Pretty print、Linearize 與 XPath 查詢等指令。它也提供 JSON View 選項,但該檢視僅在內容已為 JSON 時重新格式化當前檔案,並不會從 XML 緩衝區產生 JSON。該外掛中真正的 XML 轉 JSON 功能相當有限,因此多數使用者最終仍會將文件複製到獨立轉換器中處理。

手動的尋找與取代規則則更為脆弱。看似正確的樣式套用到另一個檔案時會在不知情的狀況下出錯:未加引號的屬性、重複的根元素、未閉合的 CDATA 區段、命名空間前綴以及混合內容元素,都會破壞天真的正規表示式取代。能逐步走訪文件樹的結構化轉換器可消除這些隱性失敗,並為您提供可與下游服務所期待的 JSON 契約比對的可重現對映。

透過瀏覽器工作流程在 Notepad++ 中將 XML 轉換為 JSON

  1. 在 Notepad++ 中開啟您的 XML 檔案,並檢查其具備格式正確的根元素、平衡的標籤,以及頂端沒有 DOCTYPE 宣告。若存在 <!DOCTYPE ...> 該行,請在繼續前將其刪除 —— 轉換器刻意拒絕 DOCTYPE 以避免外部實體展開。
  2. 選取整份文件 (在 Windows 上按 Ctrl + A,在 macOS 上按 Cmd + A),並將其複製到剪貼簿。
  3. 在相同的瀏覽器工作階段中開啟 XML to JSON Converter,並將文件貼到輸入區域。
  4. 選擇與您下游用途相符的 JSON 縮排樣式:用於傳輸的緊湊格式、用於一般 API 範例的兩空白,或用於易讀檢閱的四空白。
  5. 點擊 Convert to JSON。瀏覽器使用 DOMParser 解析 XML;若出現解析錯誤,工具會拒絕該文件,而非回傳部分結果。
  6. 檢視產生的 JSON,留意 @attributes 物件、文字與子元素並存時的 #text 鍵,以及取代重複同層元素的 JSON 陣列。
  7. 複製 JSON 輸出,並將其貼回 Notepad++ 的新分頁,以利後續編輯、驗證,或參考 Notepad++ JSON 格式化指南與前一版本進行比對。

轉換慣例如何將 XML 對映至 JSON

XML 與 JSON 之間並無通用的逐一對應對映,因此本轉換器寧可公開明確契約,也不宣稱採用標準。預先了解規則能讓您預測輸出結果,並在錯誤送至正式環境前及早察覺不一致之處。

XML 來源 JSON 輸出
元素的屬性 集中於該元素的 @attributes 物件之下
僅含文字內容的元素 裸的字串值
含屬性或子元素並帶有文字的元素 直接文字儲存於 #text 之下
單一子元素 單一值 (非陣列)
多個同名的同層元素 依文件順序的 JSON 陣列
諸如 soap:Body 的命名空間前綴 在元素與屬性名稱中逐字保留
不帶屬性的空元素 空字串
帶屬性的空元素 僅含 @attributes 的物件
CDATA 區段 其文字內容併入 #text
註解與處理指令 不會複製到 JSON

上述表格直接帶來兩個結果。首先,像是帶前置零的識別碼、像 "01.02" 這類版本字串,以及看似數字的郵遞區號等詞法值,皆會保留為 JSON 字串 —— 轉換器不會推斷數字、布林值或 null,因為在接收系統已將其視為文字的情況下,默默將文字標記轉為 1.02 或 true 會損壞資料。其次,重複的同層元素一律會成為陣列,而非巢狀的單一物件,因此若某個 REST 端點期待單一值,它絕不會在文件名稱重複時默默收到陣列。

轉換器刻意排除的項目

有幾項行為屬於刻意設計而非疏漏,它們會影響該工具是否為特定 Notepad++ 工作流程的合適選擇。

  • 不解析 DOCTYPE 或外部實體。轉換器會拒絕以 <!DOCTYPE ...> 開頭的文件,且不會擷取 DTD、結構描述、樣式表或遠端命名空間。這能保護您免於 XML 外部實體攻擊這類威脅,並保持轉換在本地進行。
  • 不自動進行型別轉換。絕不會從文字內容產生數字、布林值與 null。詞法上的 XML 值會保留為 JSON 字串。
  • 不保留混合內容交錯。單一元素內部的直接文字與子元素順序會合併至 #text 與子元素名稱之下,但文字與標籤之間的精確交錯順序不會保留。
  • 不傳遞註解或處理指令。註解與 <?pi?> 指令會在轉換過程中被捨棄。
  • 200,000 字元的來源限制。超過此大小則需要在您自己的應用程式中使用串流或專屬解析器。

若您的下游消費者期待不同的慣例 —— 例如子元素一律為陣列、型別推斷、保留註解,或獨立的命名空間物件 —— 您將需要對 JSON 進行後處理,或挑選預設值符合該契約的程式庫。

瀏覽器轉換器與 Notepad++ 外掛:該如何選擇

正確的工具取決於文件大小、整合需求以及契約的嚴格程度。下表比較讀者在 Notepad++ 中工作時通常會考量的三種工作流程。

方法 轉換執行位置 最適用於 主要限制
基於瀏覽器的 XML to JSON Converter 使用 DOMParser 的本機瀏覽器分頁 API 範例、設定檢查、小型資料移轉、測試資料 200,000 字元的來源上限,且無法無損保留混合內容
Notepad++ XML Tools 外掛 編輯器程序內部 美化列印、XPath 查詢,以及對已是 JSON 的檔案進行快速的 JSON 檢視 內建 XML 轉 JSON 功能有限;XML 必須語法上有效
於 Notepad++ 中手動尋找與取代 編輯器緩衝區內部 對不帶屬性、命名空間或重複元素的小片段進行一次性微調 在屬性、重複標籤、CDATA 與混合內容上會在不知情狀況下出錯

就常見情況 —— 一段 API 範例、設定檔、SOAP 信封片段,或是您於 Notepad++ 中開啟以進行編輯的測試資料 —— 瀏覽器工作流程讓文件留在您的機器上,套用已記載的對映,並回傳可直接貼回編輯器的 JSON,無需安裝任何新軟體。若您的文件超出輸入上限,或需要無損保留混合內容,則應將轉換作業移至版本控管的解析器中,而非仰賴外掛或尋找與取代。

延伸閱讀:Cookie 轉換器範例:從標頭到 JSON 對映