Ad
DevToolXDevToolX

XML 格式化

格式化、驗證和美化 XML 資料

關於 XML 格式化

XML Formatter 把你的 XML 重新序列化成一致縮排的格式,讓深層巢狀的元素和屬性一眼就能讀懂。它會找出 well-formedness 錯誤——未閉合的標籤、大小寫不匹配、缺少根元素——這些問題會讓任何符合規範的 parser 直接拒絕解析。適合用於閱讀 SOAP envelope、檢視 RSS/Atom feed、編輯 Android 資源 XML,以及在 SAML assertion 送到 IdP 之前先除錯。

常見使用情境

閱讀 SOAP 回應
很多服務回傳的 SOAP envelope 是壓縮格式,把它格式化後才能輕鬆找到 Body 和 Fault 元素,不必一個個數角括號。
檢視 RSS 和 Atom Feed
Feed 聚合器和 podcast 客戶端都吃 XML feed,把原始 XML 美化後可以確認頻道 metadata、文章數量和附件 URL 是否正確。
編輯 Android 資源 XML
Android 的 strings.xml 和 layout 檔必須是 well-formed XML,格式化後能在 build 失敗前就發現縮排跑掉或重複的 key。
Debug SAML Assertion
SAML 驗證 token 是 base64 編碼的 XML,解碼後格式化可以在整合 SSO 時快速查看 issuer、audience 和屬性宣告。

常見問題

XML 和 HTML 有什麼不同?

XML 區分大小寫(<Item> 和 <item> 是不同元素),每個元素都必須明確閉合或自閉合(<br/> 而非 <br>),也沒有隱含元素——parser 不會自動補標籤。HTML 有容錯的解析規則以應付現實中的標記錯誤,XML 完全沒有這種容忍。

CDATA 區段是什麼用途?

CDATA 區段(<![CDATA[ ... ]]>)包裹不想被 escape 的內容,例如一段 JavaScript 或 SQL。Parser 把裡面的所有內容視為純字元資料,忽略 < 和 & 等 markup 字元。當你需要在 XML 元素裡放入大量特殊字元時,用 CDATA 比逐一 escape 方便得多。

XML namespace 是什麼?

Namespace(xmlns:prefix="uri")用來避免合併不同 XML 詞彙時的元素名稱衝突——例如 SOAP 用 soap:Envelope,payload 裡也有自己的 envelope 元素。那個 URI 只是唯一識別符,不需要指向真實文件。

為什麼 XML 比 JSON 肥?

XML 的開始標籤和結束標籤都要寫元素名稱,屬性要加引號,namespace 到處都有 URI 前綴。JSON 表達同樣資料的冗餘少很多。XML 的冗長換來了一些優勢——混合內容(文字與 markup 交錯)、註解、處理指令、XSD schema——但純粹交換資料時 JSON 幾乎都更小、解析更快。

相關工具