若要在 IntelliJ IDEA 中格式化 XML,請開啟檔案並在 Windows 或 Linux 上按下 Ctrl+Alt+L,或在 macOS 上按下 Cmd+Option+L,以觸發 Reformat Code 動作,該動作會套用您所設定的 Code Style → XML 設定,包括縮排、換行與屬性換行。如果 IDE 無法將檔案辨識為 XML,且右下角的狀態列顯示「Plain Text」,請從狀態列選單或透過 Settings → Editor → File Types 指定 XML 檔案類型後再重新格式化,否則該動作會將內容視為純文字並略過縮排規則。當 IDE 無法使用、收到的 XML 是壓縮成一行,或單純想要在不打開專案的情況下獲得乾淨的 pretty-print 檢視時,可使用瀏覽器版的 XML Formatter,它能接收原始文字、讓您選擇 2 空格、4 空格或 Tab 縮排,並在不上傳任何內容到伺服器的情況下重新格式化或壓縮結果。兩種方法共享同一個目標:將難以閱讀的 XML 區塊轉換成能反映其實際巢狀層級的版面,使每個元素都位於其真實所在的層級。

how to format xml in intellij
在 IntelliJ IDEA 中格式化 XML:快捷鍵與瀏覽器選項

IntelliJ IDEA 內建的 XML 格式化工具

IntelliJ IDEA 內建完整的 XML 感知編輯器,支援格式化、結構驗證、命名空間匯入、程式碼樣式設定以及程式碼結構導航。JetBrains 將 XML 視為 IDE 中的一級語言,並提供重新格式化的快捷鍵(Ctrl+Alt+L / Cmd+Option+L)、縮排調整(Ctrl+Alt+I / Ctrl+Alt+I),以及一個專屬的 Code Style → XML 頁面,可控制格式化輸出的各個面向。Reformat Code 動作會逐行處理文件,套用您設定的縮排大小、屬性換行規則、空行慣例以及標籤對齊方式,預設會作用於整個檔案,若您先選取某個範圍,則僅作用於該選取區域。由於 IDE 在格式化前會先解析 XML,因此它理解標籤實際的起訖位置,能避免在含有 > 的屬性值或自閉合元素上,正則表達式為基礎的 pretty-printer 經常產生的損壞輸出。

在 IntelliJ IDEA 中格式化 XML:逐步說明

  1. 在編輯器中開啟 XML 檔案。如果右下角的狀態列顯示「Plain Text」而非「XML」,請點擊它並選擇 XML,讓 IDE 套用 XML 感知的解析、補全與格式化規則。
  2. 將游標放在檔案中的任何位置,或選取您想格式化的特定範圍。基於選取的格式化僅會套用於醒目提示的區塊。
  3. 在 Windows 或 Linux 上按下 Ctrl+Alt+L,或在 macOS 上按下 Cmd+Option+L。這就是 Reformat Code 快捷鍵,在大多數 JetBrains IDE 中皆可使用,包括 WebStorm、PyCharm、GoLand、RubyMine 與 Android Studio。
  4. 若跳出對話框詢問要格式化整個檔案還是僅選取範圍,請選擇符合您意圖的選項。多數使用者第一次會選擇「Whole file」,之後再切換為選取模式。
  5. 在編輯器中檢視變更。當動作影響的行數超出預期時,IntelliJ 會在裝訂邊顯示差異指示,讓您能快速找出想復原的部分。
  6. 在 Windows 或 Linux 上使用 Ctrl+S,或在 macOS 上使用 Cmd+S 存檔,將格式化後的版本寫入磁碟。

若想保留現有的換行、僅正規化前置空白,請改用 Auto-Indent Lines(在 Windows/Linux 上為 Ctrl+Alt+I,在大多數 JetBrains IDE 的 macOS 上亦為 Ctrl+Alt+I)。當同事是手動編輯檔案、而您只想修正縮排、不想重建整體版面時,這個功能相當實用。

在 IntelliJ 設定中配置 XML 程式碼樣式

Reformat Code 會採用在 Windows 或 Linux 上位於 Settings → Editor &rash; Code Style → XML,或在 macOS 上位於 IntelliJ IDEA → Preferences → Editor → Code Style → XML 中的規則。此處的變更會持續影響每次 Reformat Code,直到您再次變更為止,對話框右側的預覽窗格會在套用前顯示格式化後的輸出樣貌。對話框內的控制項分散於多個分頁,對應官方 JetBrains 文件的結構:

  • Tab and Indent:在「Use tab character」與空格之間切換、設定縮排大小(2 或 4 為常見值)、為換行後的屬性列表設定 continuation indent,並決定重新格式化時是否保留現有縮排。
  • Smart tabs:啟用混合的 Tab 與空格縮排,前置空白使用 Tab、對齊填充使用空格,適用於遵循此慣例的專案。
  • Wrapping and Braces:設定右邊界寬度、於邊界強制換行、輸入時換行、視覺輔助線,以及 Keep when reformatting 區段,可在重新格式化時將屬性或文字區塊釘選在原始格式,即使周圍程式碼被重新格式化也保持不變。
  • Blank Lines:設定頂層元素周圍、標籤內部,以及特定標籤群組前後的最小空行數,這在設定檔中區隔類函式區塊時非常有用。

設定完成後,您可以透過 Code → Reformat Code 將該樣式套用至整個專案,甚至可以透過 JetBrains 格式化工具從命令列執行,它會依據相同的專案層級樣式格式化檔案,而無需啟動完整的 IDE。對於以 IntelliJ 為核心的 JSON 工作流程,相同的快捷鍵模式也適用,相關說明請見 在 IntelliJ IDEA 中格式化 JSON:快捷鍵與瀏覽器

瀏覽器版 XML 格式化工具的適用時機

當您已位於專案內、檔案類型可被辨識,且程式碼樣式與程式碼庫其他部分一致時,IntelliJ 是合適的工具。然而在某些情境下,IDE 反而會帶來比幫助更多的干擾:

  • XML 來自伺服器回應或日誌片段,且不屬於任何已開啟的專案。
  • 有人傳給您一個單行的壓縮酬載,而您只是想讀懂它實際的內容。
  • 您正在一台未安裝或未授權 IDE 的機器上審視程式碼。
  • 您需要格式化的 XML 與其他內容混雜,且不希望 IntelliJ 意外地重新格式化錯誤的檔案。
  • 您正在處理敏感的 XML,例如內部 API 回應、專屬設定或客戶資料,並希望位元組保留在本機裝置上。

在這些情境下,一個專注的瀏覽器工具就能在沒有 IDE 額外負擔的情況下完成工作。

使用 XML Formatter 在瀏覽器中格式化 XML

  1. 在 XML Formatter 頁面上的輸入框中貼上或輸入您的 XML。
  2. 依據專案慣例,從 2 空格、4 空格或 Tab 中選擇縮排樣式。
  3. 點擊 Format 以一致的縮排美化文件,或點擊 Minify 將其壓縮為單一精簡行。
  4. 檢視結果。若輸入含有格式錯誤的 XML,工具會顯示友善的錯誤訊息,通常附帶行號與欄號參考,您可先修正來源再重新執行。
  5. 點擊 Copy 將格式化或壓縮後的輸出複製到剪貼簿,再貼至您需要的地方。

所有處理皆在您的瀏覽器中透過 JavaScript 文字處理在本地端完成,因此您的 XML 絕不會被上傳、絕不會傳送至伺服器、絕不會被記錄,也絕不會被儲存。這讓此工具適合用於敏感設定、內部 API 回應或專屬資料檔案,且即使在網路斷線時仍可使用。

格式化與壓縮:您需要哪個方向

Format 與 Minify 用途相反。Format 會展開空白並重建縮排,使結構易於掃描;Minify 則去除非必要的空白,產生單一精簡行,以縮減酬載大小且不改變語意。下表將常見情境對應到適合的方向。

使用情境偏好方向為何適合
閱讀不熟悉的 XML 酬載Format縮排能一目了然地呈現巢狀結構
除錯不對稱或錯置的標籤Format視覺化結構使不平衡處顯而易見
透過網路傳送 XMLMinify去除空白且不改變語意
將 XML 內嵌於原始碼中Minify單行格式適合行內嵌入而不會換行
針對手動編輯檔案進行程式碼審查Format凸顯不一致的縮排
將 XML 儲存於容量受限的快取中Minify以仍可相同方式解析的最小酬載呈現

瀏覽器版 XML 格式化工具能正確保留的內容

天真的尋找與取代 pretty-printer 會以細微方式破壞 XML。XML Formatter 以 XML 的標籤與屬性模型為核心,能處理那些使較簡單工具出錯的結構。含有大於字元的屬性值會被正確解析,而不會提前截斷標籤。自閉合元素會保持原樣,因此 <br/> 仍然是 <br/>,而非被展開。註解會保留在原位並隨著文件其餘部分一起縮排,因此作者註解不會遺失。CDATA 區段會原封不動地通過,其中的字面字元(包括保留符號與看似標記的文字)在格式化與壓縮過程中皆會保留。XML 宣告與處理指令會保持在頂部的獨立行,DOCTYPE 宣告會逐字保留。

當元素混合文字與行內子元素時(例如在 SVG 文字、XHTML 或文件格式中可見的標記),整段文字會以單行方式原樣保留,因此其內部任何具意義的空白皆不會被改寫;格式化僅會重新縮排標籤之間的空白。與 JSON 格式化工具完全不同——後者完全無法處理 XML,因為 JSON 沒有屬性、註解、CDATA、命名空間或處理指令——本工具是專為 XML 的結構與特殊結構而打造。在重新格式化過程中,解析器會標示其遭遇的結構問題,例如未閉合的標籤、不對稱或錯置的結束標籤,以及未結束的註解、CDATA 區段或處理指令,並以友善的訊息呈現,盡可能附上行號與欄號參考。它並非完整的 schema 或 DTD 驗證器,因此不會依 XSD 檢查文件、不會驗證資料型別,也不會強制執行命名空間規則;請將其視為一個拒絕悄悄輸出損壞結果的格式化工具,而非合規性檢查工具。

若想深入了解,請參閱 在不上傳的情況下將 XML 轉換為 CSV 檔案