XML 格式化工具

對 XML 進行格式化、壓縮,並即時檢查標籤是否閉合正確(良構性)。也適合用來檢視 SOAP/REST 介面響應或 RSS/Atom 訂閱源。

什麼是 XML 格式化工具

XML 格式化工具可以將擠在一行、沒有換行的 XML,或縮排混亂的 XML,重新整理成具有清楚縮排的可讀結構。它也能反過來運作:去除標籤之間的空白與換行,將內容壓縮為一行(壓縮模式),兩種模式可透過同一個開關隨時切換。縮排可選擇 2 個空格、4 個空格或定位字元(Tab),方便配合專案既有的程式碼慣例。

輸入的同時,工具也會自動判斷是否符合 XML 規範中的格式良好(Well-formed)規則:檢查開始標籤與結束標籤是否對應、根元素是否只有一個、標籤名稱與屬性名稱的寫法、屬性值是否用引號括住、是否有重複屬性、是否有未跳脫的「&」、註解中是否含有「--」等。如有問題,會顯示「無效的 XML」徽章,並列出附有行號的錯誤,避免肉眼檢查時遺漏。所有處理都在瀏覽器內的 JavaScript 中完成,輸入的 XML 不會傳送到 toolbase.cc 的伺服器。

XML 格式化工具的使用方法

  1. 貼上 XML 將 XML 貼到左側輸入欄。若手邊沒有可用的資料,可以點選「示例」按鈕載入一段 RSS 訂閱源範例。
  2. 選擇縮排寬度 可選擇 2 個空格、4 個空格或定位字元。配合現有檔案的慣例,方便直接貼回原處。
  3. 確認格式化結果與狀態標籤 右側輸出欄會顯示格式化結果,同時切換「格式良好(Well-formed)」或「XML 無效」標籤。若無效,下方會列出附行號的錯誤清單。
  4. 視需要切換到壓縮模式 開啟「壓縮模式」後,輸出欄會顯示去除標籤間空白後的單行壓縮結果。
  5. 選擇複製格式化結果或壓縮結果 點選「複製格式化結果」或「複製壓縮結果」,即可將對應內容複製到剪貼簿。

用好本工具的小技巧

  • 您輸入的所有內容都完全在瀏覽器內通過 JavaScript 處理,不會發送到 toolbase.cc 的伺服器,因此可以放心用來格式化包含敏感資訊的內部配置檔案或介面響應。
  • 開啟壓縮模式後,標籤之間的換行與縮排空白都會被去除,便於嵌入配置檔案或壓縮 HTTP 請求體。
  • 如果結果顯示"XML 無效",通常是因為存在未閉合的標籤或開始/結束標籤名稱不一致。可根據錯誤列表中顯示的行號定位問題所在。
  • 本工具與 JSON、SQL 格式化工具採用相同的實現思路。如果您的介面同時返回 JSON 和 XML,配合 JSON 格式化工具 使用能提升除錯效率。
  • 標籤匹配同時考慮名稱空間字首(例如 <soap:Envelope>),因此也適合用來除錯 SOAP 訊息。

XML 格式化工具的應用場景

檢視 SOAP/REST 介面回應

當 SOAP 或 REST 介面回傳的 XML 擠在同一行時,格式化後就能一眼看出元素的巢狀關係與命名空間前綴,有助於開發過程中的除錯。

閱讀 RSS/Atom 訂閱源

將部落格或新聞網站發布的 RSS/Atom 訂閱源格式化,即可用易讀的方式檢視 item 元素的排列順序與各欄位的值。

排查設定檔與建置定義中的語法錯誤

當 Android 版面配置 XML 或 Maven 的 pom.xml 無法正常載入時,貼上驗證即可當場找出未閉合的標籤。

壓縮以減少傳輸量

若把帶縮排的 XML 直接作為介面回應或靜態檔案對外提供,縮排空白會額外增加傳輸量。面向實際使用者的場合請改用壓縮後的版本。

轉換為其他格式前的預先處理

先確認文件符合良好格式,再交給 XML 轉 JSON 等轉換工具,可避免轉換過程出現難以追溯原因的錯誤。

XML 相關術語表

元素(Element)
XML 文件的基本組成單位,由開始標籤與結束標籤(<item>...</item>)構成,或是自我閉合的標籤(<item />)。元素可以互相巢狀,整份文件會在唯一的根元素之下形成樹狀結構。
屬性(Attribute)
寫在開始標籤內部、格式為 name="value" 的附加資訊。某項資料究竟該設計為子元素還是屬性,屬於設計層面的取捨,XML Schema 的設計指南對此有詳細討論。
良好格式(Well-formed)
XML 規範所規定、所有 XML 文件都必須符合的書寫規則。包括標籤正確開關且巢狀不亂、只有一個根元素、屬性值用引號括住且不重複、「&」與「<」已正確跳脫等。本工具的驗證功能判斷的正是是否格式良好。它與表示符合結構描述(Schema)的「有效(Valid)」是不同的概念。
命名空間(Namespace)
以 xmlns:soap="..." 的形式宣告,並透過帶前綴的標籤名稱(例如 <soap:Envelope>)使用的機制。它讓來自不同詞彙表的 XML 能在同一份文件中共存而不致命名衝突,在 SOAP 訊息中被大量運用。
CDATA 區塊
以 <![CDATA[ ... ]]> 包住的一段內容,XML 剖析器不會將其當作標籤來解讀。適合用來嵌入含有角括號的 HTML 片段或原始碼,而不必逐字元進行跳脫處理。
處理指令(Processing Instruction)
以 <? 與 ?> 包住的一段說明,文件開頭常見的 XML 宣告 <?xml version="1.0"?> 即為典型範例,用於向剖析器或應用程式傳達指示。
DTD(文件類型定義)
用來定義 XML 文件可包含哪些元素與屬性的機制之一,以 <!DOCTYPE ...> 宣告。功能更完整的替代方案 XML Schema(XSD)如今也被廣泛採用。

常見問題

指符合 XML 規範所規定之書寫必要條件的狀態:每個開始標籤都有對應的結束標籤且巢狀正確、只有一個根元素、屬性值用引號括住且不重複、「&」與「<」已跳脫等。不符合這些條件的 XML 會被剖析器報錯而無法讀取。它與確認是否符合結構描述(DTD/XML Schema)的「valid(有效)」是不同的概念。

對於全新的 Web API,JSON 通常更輕量、更易於處理。但在SOAP 對接、RSS/Atom 訂閱源、SVG 以及許多現有的企業系統等已將 XML 作為標準的領域,仍然需要使用 XML。實際選擇應根據對接的生態系統來判斷。

解析器會將其誤認為標籤的一部分,從而導致格式良好性錯誤。在屬性值和文本節點中使用這些字元時,必須以實體引用的形式轉義,例如 &lt;、&amp;。

不會。本工具的壓縮功能只刪除標籤與標籤之間的空白和換行,不會改動註解和 CDATA 區段的內容。文字中的空白(例如 <p>Hello <b>world</b></p> 中單字之間的空格)具有意義,也會原樣保留。如需連同註解一起刪除,請手動移除。

可以。像 <ns:tag> 這樣帶名稱空間字首的標籤名,會連同字首一起進行完全匹配來檢查標籤的對應關係,因此對於大量使用名稱空間的 SOAP 訊息等 XML 也能正確校驗和格式化。
工具君

閒話 ― 作為 SGML 之子誕生的 XML

XML(可擴充套件標記語言)於 1998 年成為 W3C 推薦標準,其淵源可追溯到 1980 年代制定的龐大文件描述規範 SGML(標準通用標記語言)——XML 正是作為它的簡化子集而設計出來的。HTML 同樣是 SGML 的一種應用,因此 XML 與 HTML 可以說是"SGML 家族"的兄弟。

進入 2000 年代前期,以 SOAP 為代表,XML 迅速普及為 Web API 與企業間資料交換(EDI)的標準格式。它支援屬性、名稱空間,並可通過 XML Schema 進行嚴格的型別定義,這些特性正是當時企業級應用所看重的。

到了 2010 年代,主導地位被 JSON 取代,但 XML 並未因此消失。在需要豐富結構化文件表達能力的領域——如 RSS/Atom 訂閱源、SVG 影像、Office 文件(docx/xlsx 的內部格式)以及 Android 佈局檔案——XML 至今仍是標準格式。

本工具是繼 JSON 格式化工具、SQL 格式化工具之後的第三款格式化工具,與前兩者一起構成了 Toolbase 面向開發者的三大主流資料格式(JSON、SQL、XML)整形工具組合。