XML 格式化

貼上 XML 就自動排版,文本和屬性一個字元都不改。

怎麼用

  1. 把 XML 粘進輸入框——隨輸入自動排版,不用點按鈕。
  2. 選「格式化」或「壓縮」,再選 2 或 4 空格縮排;結果立刻更新。
  3. 結構寫錯時,提示會給出第幾行第幾列和具體原因;結果可一鍵複製或下載為 .xml 檔案。

示例

輸入

<!-- 訂單匯出:保留原文與屬性順序 -->
<訂單 編號="A-1042">
<客戶><姓名>張偉</姓名><城市>杭州</城市></客戶>
<備註>請在週五之前發貨 &amp; 通知倉庫。</備註>
</訂單>

輸出

<!-- 訂單匯出:保留原文與屬性順序 -->
<訂單 編號="A-1042">
  <客戶>
    <姓名>張偉</姓名>
    <城市>杭州</城市>
  </客戶>
  <備註>請在週五之前發貨 &amp; 通知倉庫。</備註>
</訂單>

預設只做格式化:一層一行、每層 2 空格。屬性順序與引號原樣保留,<姓名> 裡的文本一個字元都沒動,&amp; 也不會被展開成 &。

規則、侷限與已知問題

  • 只做結構檢查:標籤配對、屬性引號/重複/分隔、元素名與屬性名、實體語法。不做 DTD / XSD 校驗,不解析實體宣告,不檢查名稱空間字首是否已宣告。
  • 只改結構空白:屬性之間的空白、以及「元素裡只含空白」的那段空白。屬性順序、引號風格、屬性值、實體寫法、註解、CDATA、DOCTYPE 內部子集都逐字元保留。
  • 混合內容不重新縮排:<p>Hi <b>there</b>!</p> 會保持原樣空白,因為插入換行就等於改動文本。xml:space="preserve" 的子樹整段原樣輸出。
  • 空元素保持你的寫法:<a></a> 不會摺疊成 <a/>,<a/> 也不會展開;屬性不排序、引號不統一。
  • 壓縮只刪結構空白:文本里的空白、註解、CDATA 與 DOCTYPE 都保留,不從你的內容裡刪任何東西。
  • 輸入末尾的未閉合標籤/註解/CDATA/DOCTYPE 只給提示、不算錯誤——仍然出結果,這是即時輸入的正常狀態。真正寫錯(標籤不匹配、屬性值沒引號、單獨的 &)才報錯並給行列。
  • 片段(多個頂層元素、或根元素之外還有文本)會按片段排版並提示;完全沒有元素則報錯。
  • 行列號按 Unicode 碼點計,emoji 記 1 列;只有空格、Tab、換行、回車算空白,文本里的全形空格 U+3000 與不換行空格 U+00A0 屬於內容,永遠不會被刪掉。
  • 不支援 HTML:省略 </li>、<br> 這類寫法會如實報未閉合/不匹配。不提供檔案上傳、URL 傳參、歷史記錄、樹檢視、XML→JSON。不上傳、不儲存。
  • 超過 20 萬字符時,結果會在停止輸入約 0.6 秒後更新;不截斷文本。輸出使用 LF、無末尾換行;排版是冪等的(把結果再排一次不會變化)。

結構排清楚之後,通常還會用到這些。