XML Formatter / Validator

XML 格式化 / 驗證器

美化、壓縮、驗證任意 XML — REST 回應、SOAP envelope、RSS feed、sitemap、Maven、AndroidManifest 全部支援。語法高亮輸出、行 + 列錯誤回報。完全在瀏覽器內運算。

Well-formedness(格式正確) 是基本的結構規則:標籤要正確嵌套並關閉、屬性要加引號、必須有單一 root 元素、特殊字元要 escape(<& 等)。本工具用瀏覽器原生 DOMParser 檢查 well-formedness。

Validity(有效性) 是更嚴格的、對 schema(DTD、XSD、RelaxNG)的檢查 — 「文件符合這套文法」。瀏覽器 DOMParser 不做 schema 驗證;XSD 驗證需要伺服器端工具如 xmllint --schema

會。CDATA 區段(<![CDATA[…]]>)裡的內容會原樣保留 — 特殊字元不會被重新 escape。註解(<!-- … -->)和 processing instruction(<?xml-stylesheet … ?>)會放回原本的位置。XML declaration 與 doctype 行會保留為前幾行。

輸入
輸出

            

為真實 XML 設計,不只是 toy example

SOAP envelope、RSS feed、sitemap、Maven `pom.xml`、AndroidManifest — 格式化、壓縮、驗證都正確處理。

Pretty-print 美化排版

可選 2 空格、4 空格、或 Tab 縮排。Self-closing 標籤保持自封閉。CDATA 區段、註解、processing instruction、XML declaration 在 round-trip 後完全保留。

壓縮(Minify)

去除元素之間沒意義的空白,把整份文件壓成單行。適合把 XML 嵌進 JSON 字串欄位,或在窄網路上傳輸。

驗證並標出行 + 列

用瀏覽器原生 DOMParser 檢查格式正確性。錯誤時會顯示出錯的行 + 列,可直接跳到問題位置。

輸出語法高亮

標籤名、屬性、屬性值、文字內容、註解、CDATA、processing instruction 全部以顏色區分,結構一眼看清楚。

保護隱私

所有資料都留在瀏覽器內。解析、格式化、驗證、下載都以 JavaScript 在你的機器上執行。打開 DevTools → Network 可驗證沒有任何對外請求。

輕量且快速

純 JavaScript,無框架運行時。冷啟動 gzip 後不到 25 KB。格式化 200 KB 的 XML 文件並重新渲染語法高亮,80 毫秒內完成。

如何格式化與驗證 XML

從雜亂 XML 到乾淨可驗證的輸出,四個步驟。

  1. 1

    貼上你的 XML

    拖曳或貼上任何 XML — REST API 回應、SOAP envelope、RSS / Atom feed、sitemap、設定檔。輸入時會自動格式化(debounce 350 毫秒)。

  2. 2

    選擇縮排

    2 空格是現代預設(符合 Prettier 與多數風格指南)。4 空格是較舊的慣例(Java.NET)。Tab 對應你編輯器的 tab 寬度 — 適合之後手動編輯的文件。

  3. 3

    驗證或壓縮

    驗證 會回報 well-formedness 錯誤與行 + 列。壓縮 把整份文件收成單行 — 適合把 XML 嵌進 JSON 字串、資料庫欄位、或 shell 變數。

  4. 4

    複製或下載

    點複製圖示把整理過的 XML 送進剪貼簿,或下載為 formatted.xml。輸出保留 CDATA、註解、processing instruction、XML declaration。

為 SOAP、RSS、sitemap、設定檔而生

四種常見 XML 工作場景 — 在這些情況下,瀏覽器內格式化器比開 IDE 快多了。

SOAP / API 除錯

把網路 log 裡的原始 SOAP 回應貼上、格式化,實際的 fault 就會在 envelope 內清楚顯現。錯誤行 + 列讓你幾秒就能跳到拼錯的命名空間前綴、或文字裡未 escape 的 &

Sitemap 與 RSS 撰寫

貼上你手寫的 `sitemap.xml` 或 RSS feed,在送 Search Console / 聚合器之前驗證 well-formedness。可壓成單行嵌進自動化腳本。

Build 檔與設定檔

Maven pom.xml、Spring beans、NHibernate mappings、Android AndroidManifest.xml — 手動編輯後重新格式化都很方便。Commit 前先驗證,可以提早抓出 build 才會抱怨的拼錯。

Office 文件 & EPUB 內部

.docx.xlsx.pptx.epub 都是內含 XML 的 ZIP。把內部 XML 解壓出來、貼到這裡格式化,結構清楚之後再壓回 ZIP。

100% 私密 — 在瀏覽器中運算

XML 內容永遠不會離開你的裝置。打開 DevTools → Network,格式化、驗證、複製、下載過程中沒有任何對外請求。

  • 解析使用瀏覽器原生 DOMParser;格式化與壓縮只是簡單的 JavaScript 走訪所產生的 DOM tree。
  • 無遠端 validator、無第三方 XML API。你的 XML 每一個位元組都留在你的機器上。
  • 無需登入、不對文件內容埋點。只用一個 cookie 記錄 cookie 同意狀態,以及一個 cookie 記錄語言偏好。

相關文章

為 XML、SOAP 除錯、設定檔工作流程精選的實用文章。

常見問題

什麼是 well-formedness?跟「valid」的差別在哪?

Well-formedness(格式正確) 是基本的結構規則:標籤要正確嵌套並關閉、屬性要加引號、必須有單一 root 元素、特殊字元要 escape(&lt;&amp; 等)。本工具用瀏覽器原生 DOMParser 檢查 well-formedness。

Validity(有效性) 是更嚴格的、對 schema(DTD、XSD、RelaxNG)的檢查 — 「文件符合這套文法」。瀏覽器 DOMParser 不做 schema 驗證;XSD 驗證需要伺服器端工具如 xmllint --schema

格式化會保留 CDATA、註解、processing instruction 嗎?

會。CDATA 區段(<![CDATA[…]]>)裡的內容會原樣保留 — 特殊字元不會被重新 escape。註解(<!-- … -->)和 processing instruction(<?xml-stylesheet … ?>)會放回原本的位置。XML declaration 與 doctype 行會保留為前幾行。

可以貼 SOAP envelope 或 RSS feed 嗎?

可以,只要是 well-formed XML 都能用 — SOAP envelope(含 soap:Envelopesoap:Body 命名空間前綴)、RSS / Atom feed、sitemap、SVG、plist、Maven pom.xml、Spring 設定、EPUB container.xml、Android AndroidManifest.xml。Namespace 前綴會被保留 — 我們不會去除 xmlns: 屬性。

看起來沒問題,為什麼說我的 XML 有 parser error?

最常見的原因:(1)文字或屬性值內未 escape 的 & — 必須是 &amp;;(2)兩個 root 元素(XML 只允許一個);(3)開合標籤大小寫不一致(例如 <Item>…</item> — XML 區分大小寫);(4)屬性值沒加引號;(5)文字內容裡有未配對的 <。錯誤訊息中的行 + 列會指到出錯的位置。

資料會傳到伺服器嗎?

不會。解析、格式化、壓縮、驗證、語法高亮、下載都在你的瀏覽器內以 JavaScript 執行。打開 DevTools → Network 可驗證使用過程中沒有任何對外請求。我們只用一個 cookie 記錄 cookie 同意狀態,以及一個 cookie 記錄語言偏好。