UltKit

CSV 轉 XML 轉換器

把 CSV 檔案的每一列包進 XML 元素,讓只讀取標記語言的程式也能匯入。標題列決定標籤名稱,分隔符號會自動偵測,可能破壞 XML 的字元也會自動跳脫。

資料轉換器

或將CSV, TSV, TXT … 檔案拖曳到這裡 ·

每個檔案最大 95 MB· 最多 20 個檔案· 30 分鐘後刪除

輸出

檔案會在我們的伺服器上處理,並於 30 分鐘後刪除。

使用方式

  1. 1

    上傳 CSV

    拖入一個或多個 .csv、.tsv 或以分隔符號區隔的 .txt 檔案,一次最多 20 個,每個最大 95 MB。系統會自動辨識逗號、分號、Tab 與直線符號。

  2. 2

    設定根標籤

    在進階設定中,將 XML 根標籤由 rows 改成匯入端要求的名稱,例如 catalog 或 contacts。如果 CSV 來自舊版 Windows 程式,請選擇對應的文字編碼。

  3. 3

    轉換為 XML

    按下轉換為 XML並下載檔案。建議先用瀏覽器開啟:如果顯示為樹狀結構,就代表格式正確(well-formed)。

為什麼要把 CSV 轉成 XML

CSV 是資料離開系統時常用的格式;直到 2005 年 10 月才以 RFC 4180 成文,距離程式開始交換這種格式已數十年。而 XML 往往是資料必須送達時的格式。為 Adobe InDesign 準備型錄的設計師、用 XSLT 樣式表把記錄轉成 HTML 報表的開發者、把供應商清單匯入 Microsoft Access 的上班族:他們手上都是試算表匯出的資料列,而工具需要的是標籤。

手動處理需要寫腳本或做冗長的尋找取代,而且常漏掉困難的情況:含 & 符號的公司名稱、內含換行的引號欄位,或歐洲版 Excel 以分號儲存的檔案。本轉換器會先正確解析 CSV,再輸出標記。如果資料還在活頁簿中,Excel 轉 XML 可以完全省去 CSV 這一步。

CSV 轉 XML 範例:特殊字元跳脫

含引號欄位與 & 符號的分號 CSV,根標籤設為 suppliers
name;city;since
"Hart & Sons; Ltd";臺中;1998
Nordlicht GmbH;高雄;2011

<?xml version="1.0" encoding="UTF-8"?>
<suppliers>
  <row>
    <name>Hart &amp; Sons; Ltd</name>
    <city>臺中</city>
    <since>1998</since>
  </row>
  <row>
    <name>Nordlicht GmbH</name>
    <city>高雄</city>
    <since>2011</since>
  </row>
</suppliers>
格式正確的 XML(Well-formed)格式正確性 · 可解析的 XML
符合 XML 1.0 規範語法規則的 XML:只有一個根元素、每個開始標籤都有結束、標籤正確巢狀、屬性值加引號,且文字中的 & 與 < 已跳脫。解析器遇到第一個錯誤就必須停止,所以一個多餘的 & 就可能讓整個檔案被拒絕。格式正確不等於有效(valid),後者還要求符合 XSD 等結構描述。

CSV 轉 XML 轉換器的限制

每批次的 CSV 檔案數
20
單一檔案上限
95 MB
根標籤的字元數
64
上傳檔案刪除前的時間
30 分鐘

CSV 與 XML 格式說明

CSV

逗號分隔值

CSV 是一種純文字的表格格式,每一行是一列資料,欄位之間以逗號分隔。它從電腦發展初期沿用至今,並記載於 RFC 4180,不過許多變體會改用分號或定位字元,文字編碼也各不相同。幾乎所有試算表、資料庫和分析工具都能匯入與匯出,因此成為系統之間傳輸資料的預設格式。CSV 只儲存數值,不包含公式、格式、多個工作表或資料類型。

壓縮方式
–
透明度
–
動畫
–
推出年份
–
CSV 轉檔工具

XML

Extensible Markup Language

XML 是 W3C 於 1998 年發布的結構化資料標記語言。它使用帶有屬性的巢狀標籤,並支援結構描述、命名空間與驗證,因此適合處理複雜文件。RSS 摘要、SVG、Office 文件、網站地圖,以及許多企業與政府的資料交換,都以它為基礎。XML 比 JSON 冗長,但所有程式語言與許多試算表工具都能讀取。

壓縮方式
–
透明度
–
動畫
–
推出年份
1998 · W3C
XML 轉檔工具

當扁平的匯出資料必須進入以標記語言為基礎的流程時,就需要把 CSV 轉成 XML,例如 XSLT 報表、支援 XML 匯入的排版工具、資料庫的 XML 載入器,或解析器不接受任何非 well-formed 內容的整合系統。

取捨在於結構與大小。CSV 沒有型別、沒有巢狀,檔案內也無處標示所用編碼,但體積精簡。XML 每一列都會重複兩次欄位名稱,並在第一行宣告編碼。如果接收端程式較新,JSON 通常比 XML 輕巧;若 JSON 來源必須對接只支援 XML 的系統,請參考相反方向的 JSON 轉 XML。

CSV 轉 XML 常見問題

哪些程式能匯入由 CSV 轉成的 XML?

任何能讀取一般 XML 的工具都可以:透過外部資料匯入的 Microsoft Access、用於資料驅動版面的 Adobe InDesign XML 匯入、把資料轉成報表的 XSLT 處理器,以及以 XML 解析器開發的內部工具。每一列都會成為你所設定根標籤下的一個 row 元素。

接收端要求記錄標籤用 product 而不是 row,可以修改嗎?

記錄元素固定為 row,外層元素可用 XML 根標籤改名。如果嚴格的結構描述要求不同的記錄名稱,可以用一行 XSLT 範本,或將 <row> 與 </row> 尋找取代來改名。

值裡面的逗號和引號會怎麼處理?

系統會先依引號規則解析 CSV,因此 "Smith, Jane" 會維持為一個值。在 XML 中逗號不需要跳脫,而 & 和 < 會變成 &amp; 和 &lt;。

歐洲版 Excel 匯出的分號 CSV,分隔符號會有影響嗎?

自動偵測除了逗號,也能辨識分號、Tab 與直線符號。如果檔案欄位很少而猜錯了,請將分隔符號明確設為分號,再轉換一次。

如果 CSV 沒有標題列怎麼辦?

請關閉第一列為標題列。欄位會依序取得通用名稱,包含第一列在內的每一行都會成為一筆記錄。之後可自行重新命名標籤,或在 CSV 加上標題列後再轉換一次。

XML 會比 CSV 大嗎?

會,通常大上好幾倍,因為每個值都被包在開始與結束標籤中,而且每一列都重複。如果在意大小,可關閉格式化排版以去除縮排與換行,或在寄出前先壓縮成 ZIP。