什麼是 XML 格式化?
XML(Extensible Markup Language,可延伸標記語言)是 W3C 制定的結構化文件與資料交換文字格式。格式化——又稱美化輸出或 beautify——讀入格式良好的 XML 原始碼並重新縮排,讓每個元素、屬性、註解、處理指令與 CDATA 區段都便於瀏覽。解析後的文件樹完全保持不變,只有元素之間的空白會改變。
XML 格式化是如何運作的?
你的輸入完全在瀏覽器中處理,使用原生的 DOMParser 與 XMLSerializer API,再加上一個自訂的遞迴縮排器。主要步驟如下:
- 你的輸入按位元組從文字框讀取——貼進去的每一個位元組都只保留在本機記憶體中。
- 瀏覽器使用
new DOMParser().parseFromString(text, 'application/xml')解析它。若輸入不是格式良好的 XML,解析器會插入一個<parsererror>節點,其文字內容承載引擎提供的行號與欄號——這些資訊會原樣顯示在錯誤條中。 - 解析成功後,自訂縮排器以深度優先方式走訪 DOM 樹,把每個元素、屬性集合、CDATA 區段、註解與處理指令依當前深度各自獨佔一行。如果啟用相關選項,空元素會以自閉合形式呈現。
- 壓縮模式反轉此流程:
XMLSerializer().serializeToString(doc)輸出單行形式,再以一條帶有護欄的正則移除元素之間的空白,且不影響 CDATA 區塊內或非空白文字節點中的內容。 - 輸出寫入唯讀文字框,錯誤條會被清空,下載按鈕則把結果包成可寄送或附在工單上的
.xml檔。
為什麼使用此工具美化 XML?
- 隱私:每一次解析、格式化與壓縮都在你的瀏覽器中完成。XML 從不進入我們的伺服器——無上傳、無遙測、免註冊。
- 精準的錯誤:輸入不合規時,解析器會原樣展示瀏覽器引擎自己回報的行號與欄號,而非臆測——和你在 DevTools 看到的一致。
- 忠實的往返:先格式化再壓縮,你會得到與原文件位元組等價的結果(僅受 XML 宣告選項影響)——格式化不會重新正規化命名空間,也不會改寫屬性順序。
- 速度快:純 DOMParser 加上約 60 行的縮排器即可瞬間處理多 MB 的 SOAP envelope 與 OOXML 片段,無需下載任何外部函式庫。
XML 格式化有哪些常見應用?
XML 美化輸出在網頁發佈、企業整合與資料歸檔中隨處可見:
- RSS / Atom feed 檢視:貼上播客或新聞 feed 的內容,發佈前確認 channel 中繼資料、item 順序與命名空間前綴。
- SOAP 除錯:把從 Wireshark 或 SOAP 客戶端日誌複製的 envelope 格式化,讓 Header、Body 與 Fault 一目了然。
- Sitemap 稽核:重新縮排從競品或自家測試站取得的 sitemap.xml,清點條目數量並核對每個 URL 的 hreflang 替代版本。
XML 格式化的範例長什麼樣?
把三個元素的 <feed><entry><title>Hello</title></entry></feed> 貼進來,選擇 2 空格縮排並按下 格式化,會得到四行文件,每個元素各佔一行並依深度縮排。對同一輸入切換到 Minify 就會折回原始位元組字串。任何格式良好的文件都能無損往返。
可以離線運作嗎?
可以。格式化與壓縮流程是純 DOMParser + XMLSerializer 加上極小的遞迴縮排器,全部在瀏覽器分頁內運作。任何內容都不會上傳,沒有 Service Worker 代理你的輸入,格式化步驟本身不會發出任何網路請求。唯一對外流量是標準的頁面資源(CSS、字型、分析腳本)——你的 XML 從不抵達 Ultim8Soft。
格式化會改變文件嗎?
不會發生語意變化。格式化只重寫元素之間的空白。元素名稱、屬性值、文字內容、CDATA 載荷、註解與處理指令都按位元組保留。命名空間宣告與前綴完全沿用輸入——格式化器不會重新正規化或重排屬性。除可選的 XML 宣告開關外,輸出與輸入解析出的 DOM 樹完全相同。
CDATA / 註解 / 處理指令如何處理?
三者都依當前縮排深度原樣輸出在各自一行上。CDATA 載荷被包裹於 <![CDATA[…]]> 之中,內部不進行任何重新縮排——規範規定 CDATA 內容是不透明的,因此格式化器從不觸碰。註解使用 <!-- … -->,處理指令使用 <?target data?>。三類節點在 格式化 → 壓縮 → 格式化 的往返後內容完整保留。
格式化與壓縮 XML 有什麼差異?
格式化把空白展開,便於人類閱讀文件樹;壓縮則把空白移除,便於傳輸與儲存。兩者都作用在解析後的 DOM 上,而非原始位元組字串,因此對一份格式良好的文件執行 格式化 → 壓縮 的往返,會得到與原始壓縮形式位元組等價的結果。需要閱讀或 diff XML 時用格式化;需要透過計費 API gateway 傳輸或嵌入另一份文件時用壓縮。
這個 XML 格式化器使用與瀏覽器處理 AJAX XHR 回應與 SVG 文件相同的解析器,因此任何格式良好的 XML——RSS、Atom、SOAP、sitemap、OOXML、SVG——都能乾淨往返。在上方貼上任意 XML,複製輸出,或將其下載為 .xml。