跳至主要內容
Lizely

XML 轉 CSV 轉換工具

將重複的 XML 記錄元素轉換為 RFC 樣式 CSV,包含屬性、重複的子元素、精確的標籤選擇,並支援可選的公式保護。

隱私權:你的檔案不會離開裝置,所有處理均在瀏覽器本機完成。

使用方式

  1. 1.貼上正確格式的 XML,並輸入重複記錄元素共用的精確限定名稱。
  2. 2.對需要人工開啟的電子表格維持公式保護,然後進行轉換並驗證記錄與欄位數量。
  3. 3.複製或下載 CSV,檢查重複子元素的 JSON 欄位與型別敏感值,並與原始資料對比。

關於XML 轉 CSV 轉換工具

XML 到 CSV 轉換器會將重複的 XML 記錄元素轉換為矩形的逗號分隔表格。貼上一個 XML 文件,輸入重複記錄元素的準確限定名稱,選擇是否保護類似電子表格公式值,轉換後複製或下載 CSV。解析與轉換在瀏覽器端進行,文件不會上傳。

瀏覽器使用 DOMParser,並以 application/xml 解析輸入內容。標籤、引號或實體格式錯誤時會傳回錯誤文件並阻止轉換。系統會在解析前拒絕 DOCTYPE 宣告,因此此工具不會處理外部實體、DTD 預設值或自訂實體定義。記錄名稱必須是完全相符的 XML 限定名稱,例如 item 或 ns:item,並使用 getElementsByTagName 區分大小寫進行比對。

每個匹配元素都變成一行. 記錄中的屬性成為以 @ 序列前列,例如 @id. 直接子元素成為使用其準確合格名稱的列. 直接文字在子元素之外成為 #文字列,而不是隻有白色空間. 列序是決定性的:第一份記錄中的欄位首先出現,以後的記錄中以前未見過的欄位新增.。

直接子元素會貢獻其修剪後的文字內容。巢狀的標籤會展平為後代文字,因此元素邊界、子屬性、註解、處理指令、僅為結構宣告的字首,以及混合內容的順序皆不會被保留。當同一直接子元素名稱在一個記錄中出現多次時,其文字值會儲存在一個 CSV 給定的單一欄位中,以緊湊的 JSON 陣列形式儲存,而非僅保留第一個或最後一個值。

輸出的 CSV 遵循常見的 RFC 4180 模式:欄位以逗號分隔,記錄使用 CRLF,包含逗號、引號、製表符、歸位字元或換行的欄位會被雙引號包圍,巢狀引號會被重複。空白字元會被保留。缺失的欄位會變成空欄。第一個記錄會作為標題欄位,由確定的欄位合併而成。

電子表格軟體可能將以 =、+、- 或 @ 開頭的欄位視為公式。預設啟用保護功能,並在引號內以「Tab」字首這些值,遵循 OWASP 所討論的電子表格導向的緩解措施。此操作會有意改變欄位資料,並非所有電子表格或程式化匯入工具皆能安全處理。僅在需要精確原始值且目的地將所有欄位視為無活性文字時才應關閉此功能。

XML 沒有通用的紀錄到表格對應方式。這個工具適用於可預測的內容來源,例如包含重複項目元素且擁有純量子文字的目錄。它不會自動推斷紀錄、將巢狀陣列擴充套件為多行、合併父值、評估 XPath、規範名稱空間、保留結構型別、根據 XSD 驗證,或在不遺失的情況下轉換任意混和內容檔案。對於這些合約,應使用明確的轉換方式,例如 XSLT 或應用程式碼。

下載的檔案使用 UTF-8 text/csv 格式,不會附加位元組序標。部分舊式電子表格設定可能需要匯入向導或明確的 UTF-8 選取。日期、數值、前導零、識別碼以及布林值將維持來自 XML 的文字形式;開啟檔案時電子表格仍可能自動推測型別。若需保留前導零或精確度,應在匯入時設定受控的欄位型別。

限制為 500,000 XML 字元、10,000 匹配的記錄、200 欄位,以及 5,000,000 CSV 字元。轉換工具在無法處理時會失敗,不會截斷。八個外部測試案例涵蓋純文字、逗號、引號、換行、空白、Unicode,以及兩種公式開頭情境。其他測試涵蓋屬性、重複子元素、缺失欄位、錯誤名稱、DOCTYPE 拒絕、以及無匹配錯誤。轉換前請比較行與欄位數量與原始資料。

方法與來源

使用瀏覽器 DOM 解析 XML,拒絕 DOCTYPE 與解析錯誤檔案,選擇精確的限定記錄名稱,將記錄屬性與直接子元素文字展平為確定的欄位合併,保留重複專案為緊湊的 JSON 陣列,並以 RFC 樣式 CRLF CSV 串列化,支援可選的公式欄位保護。

常見問題

為何屬性欄位會以 @ 開頭?
此字首可將記錄屬性與可能使用相同名稱的子元素區分開。
巢狀的 XML 元素會如何處理?
其後代文字會展平至直接子元素欄位。結構與子屬性不會被保留,因此此轉換是故意的損失性操作。
為何某些電子表格欄位會以 Tab 開頭?
當保護功能啟用時,以公式字元開頭的值會在引號內以 Tab 字首,以減少意外執行電子表格公式。僅在評估目的地後,且需要精確的原始值時才應關閉此功能。

開發者工具 使用指南

查看全部