ToolDeck

แปลง CSV เป็น XML

แปลงข้อมูล CSV ให้เป็นรูปแบบ XML

ลองตัวอย่าง

ข้อมูล CSV

ผลลัพธ์ XML

ประมวลผลในเครื่อง · ปลอดภัยในการวางข้อมูลลับ
ผลลัพธ์ XML จะปรากฏที่นี่…

CSV เป็น XML คืออะไร?

การแปลง CSV เป็น XML คือกระบวนการเปลี่ยนข้อมูลที่คั่นด้วยจุลภาคให้กลายเป็นเอกสาร Extensible Markup Language (XML) แต่ละแถวของ CSV จะกลายเป็น XML element และแต่ละหัวคอลัมน์จะกลายเป็นชื่อ child element tag ผลลัพธ์คือเอกสารแบบลำดับชั้นที่อธิบายตัวเองได้ ซึ่งระบบต่าง ๆ สามารถตรวจสอบด้วย schema (XSD หรือ DTD) และประมวลผลด้วยเครื่องมือ XML มาตรฐาน เช่น XSLT, XPath และ SAX/DOM parsers

XML เป็นมาตรฐานการแลกเปลี่ยนข้อมูลมาตั้งแต่ปี 1998 ที่ W3C เผยแพร่ข้อกำหนด XML 1.0 แม้ว่า JSON จะเข้ามาแทนที่ XML ใน web API จำนวนมาก แต่ XML ยังคงเป็นรูปแบบที่จำเป็นสำหรับ SOAP web services, RSS/Atom feeds, SVG graphics, Office Open XML documents (.docx, .xlsx), Android resource files, Maven/Gradle build configs และอุตสาหกรรมที่มีการควบคุม เช่น สาธารณสุข (HL7 CDA), การเงิน (FpML, XBRL) และภาครัฐ (NIEM) เมื่อข้อมูลต้นทางเป็น spreadsheet หรือการส่งออกจากฐานข้อมูล การแปลง CSV เป็น XML คือวิธีนำข้อมูลเข้าสู่ระบบเหล่านี้

เครื่องมือแปลง CSV เป็น XML ที่ถูกต้องต้องรองรับ edge cases ตาม RFC 4180 ได้แก่ ฟิลด์ที่ใส่เครื่องหมายคำพูดซึ่งมีจุลภาคหรือขึ้นบรรทัดใหม่ เครื่องหมายคำพูดคู่ที่ escape แล้ว และตัวคั่นที่หลากหลาย ในส่วนของ XML ต้องทำการ escape ห้า XML entities ที่กำหนดไว้ล่วงหน้า (& < > " ') สร้างชื่อ element ที่ถูกต้องจากหัวคอลัมน์ (โดยแทนที่ช่องว่างและอักขระพิเศษ) และสร้างผลลัพธ์ที่ well-formed พร้อม XML declaration และ encoding ที่สอดคล้องกัน

ทำไมต้องใช้เครื่องมือแปลง CSV เป็น XML?

การเขียน XML ด้วยมือจากข้อมูล spreadsheet ทำได้ช้าและเกิดข้อผิดพลาดได้ง่าย การลืม closing tag หรือไม่ทำการ escape เครื่องหมาย ampersand จะทำให้ XML ไม่ถูกต้องและทำให้ parser ปลายทางเกิดปัญหา เครื่องมือนี้จัดการการ parse, escape และการสร้าง element ในขั้นตอนเดียว

แปลงได้ทันทีในเบราว์เซอร์
วาง CSV แล้วรับผลลัพธ์ XML ที่ well-formed พร้อม declaration, root element และ child elements ที่ซ้อนกัน ไม่ต้องใช้ command-line tools หรือติดตั้ง library ใด ๆ
🔒
ข้อมูลปลอดภัย ไม่รั่วไหล
การแปลงทั้งหมดทำงานในเบราว์เซอร์ด้วย JavaScript ข้อมูล CSV ของคุณจะไม่ถูกอัปโหลดไปยังเซิร์ฟเวอร์ ไม่มีการบันทึก log และไม่มีการจัดเก็บนอกเครื่องของคุณ
🎯
สร้าง XML ที่ถูกต้องและ well-formed
ผลลัพธ์จะทำการ escape XML entities ตรวจสอบและทำความสะอาดชื่อหัวคอลัมน์ให้เป็น element tags ที่ถูกต้อง และสร้าง markup ที่ซ้อนกันอย่างถูกต้องซึ่งผ่าน XML validator หรือ linter ได้
📋
รองรับ CSV หลากหลายรูปแบบ
ตรวจจับตัวคั่นอัตโนมัติ ไม่ว่าจะเป็นจุลภาค เซมิโคลอน แท็บ หรือ pipe รองรับกฎการใส่เครื่องหมายคำพูดตาม RFC 4180 รวมถึง escaped double quotes, multiline fields และไฟล์ UTF-8 ที่มี BOM

กรณีการใช้งานแปลง CSV เป็น XML

เชื่อมต่อ SOAP และ legacy API
ระบบองค์กรจำนวนมากยังคงใช้ SOAP web services ที่ต้องการ XML request body แปลงข้อมูล CSV ที่ส่งออกมาเป็น XML payloads ที่ตรงกับ WSDL schema ของบริการก่อนส่ง request
สร้างไฟล์ build configuration
สร้างรายการ dependency ใน Maven pom.xml, Android resource files หรือ Spring bean definitions จาก spreadsheet ของ dependencies, strings หรือ config entries สร้าง XML configs จำนวนมากจากไฟล์ CSV เดียว
ETL ใน data pipeline
นำ CSV exports จากฐานข้อมูลหรือเครื่องมือวิเคราะห์เข้าสู่ ETL pipelines ที่ใช้ XML เครื่องมืออย่าง Apache NiFi, Talend และ SSIS รับ XML inputs สำหรับ transformation workflows ที่ต้องการการตรวจสอบ schema ในแต่ละขั้นตอน
รายงานตามกฎระเบียบและการปฏิบัติตามข้อกำหนด
อุตสาหกรรมอย่างสาธารณสุข (HL7 CDA), การเงิน (XBRL, FpML) และภาครัฐ (NIEM) กำหนดให้ส่งข้อมูลในรูปแบบ XML แปลงข้อมูลตารางที่ต้องปฏิบัติตามข้อกำหนดให้เป็นโครงสร้าง XML ที่ต้องการก่อนส่ง
สร้าง RSS และ Atom feeds
เปลี่ยนรายการบทความ ชื่อ และวันที่ใน CSV ให้เป็น RSS 2.0 หรือ Atom feed workflow การจัดการเนื้อหามักเริ่มจาก spreadsheet ของโพสต์ที่ต้องเผยแพร่เป็น syndication feed
สอนพื้นฐาน XML
นักศึกษาที่เรียน XML สามารถวางข้อมูล CSV ที่คุ้นเคยและดูลำดับชั้น element ที่ได้ การซ้อน และการ escape entities การเปรียบเทียบ input และ output ช่วยให้แนวคิดนามธรรมอย่าง well-formedness และ validity จับต้องได้จริง

ตารางอ้างอิงการ mapping CSV เป็น XML

การเข้าใจว่าแต่ละส่วนของไฟล์ CSV ถูก map ไปยังโครงสร้าง XML อย่างไร ช่วยให้คุณคาดการณ์รูปแบบผลลัพธ์และปรับข้อมูลก่อนแปลงได้

แนวคิด CSVXML ที่เทียบเท่ารายละเอียด
CSV fileXML documentThe entire file maps to a root element containing all records
Header rowElement tag namesEach column header becomes the tag name for child elements
Data row<row> elementEach row becomes a repeating child element of the root
Cell valueText nodeCell content becomes the text inside the corresponding tag
Empty cellEmpty element or omittedCan be rendered as <field/> or excluded from output
Comma delimiterXML structureDelimiters are replaced by element nesting and closing tags

CSV เทียบกับ XML

CSV เป็นรูปแบบแบบแบนที่ใช้ตัวคั่นโดยไม่มี schema หรือประเภทข้อมูลในตัว XML เป็นภาษา markup แบบลำดับชั้นที่อธิบายตัวเองได้ รองรับ schemas, namespaces และการซ้อนที่ซับซ้อน การเลือกใช้รูปแบบใดขึ้นอยู่กับข้อกำหนดของระบบปลายทาง

CSV
ข้อความธรรมดา หนึ่งระเบียนต่อบรรทัด ไม่มีประเภทข้อมูล ทุกค่าเป็น string ไม่มีลำดับชั้นหรือการซ้อน ขนาดไฟล์เล็ก รองรับโดย spreadsheets, ฐานข้อมูล และ scripting languages ทั่วไป กำหนดโดย RFC 4180 เหมาะที่สุดสำหรับการถ่ายโอนข้อมูลตารางอย่างง่ายระหว่างระบบที่ทั้งสองฝ่ายเข้าใจรูปแบบคอลัมน์
XML
Markup แบบลำดับชั้นด้วย opening และ closing tags รองรับ attributes, namespaces, mixed content และ CDATA sections สามารถตรวจสอบด้วย XSD หรือ DTD schemas ประมวลผลด้วย XSLT, XPath, SAX และ DOM parsers ขนาดไฟล์ใหญ่กว่า CSV เนื่องจาก tag overhead จำเป็นสำหรับ SOAP APIs, Office Open XML, RSS/Atom และอุตสาหกรรมที่มีการควบคุมจำนวนมาก

ตัวอย่างโค้ด

ด้านล่างเป็นตัวอย่างการแปลง CSV เป็น XML ในภาษาโปรแกรมต่าง ๆ แต่ละตัวอย่างจะ parse แถวหัวคอลัมน์ของ CSV เป็นชื่อ element tag ห่อแต่ละแถวข้อมูลด้วย container element และ escape XML entities ในเนื้อหาของ cell

JavaScript (browser / Node.js)
// CSV string → XML with proper escaping
const csv = `name,age,city
Alice,30,Berlin
Bob,25,Tokyo`

function csvToXml(csv, rootTag = 'data', rowTag = 'row') {
  const rows = csv.trim().split('\n').map(r => r.split(','))
  const [headers, ...data] = rows
  const xmlRows = data.map(row => {
    const fields = headers.map((h, i) => {
      const val = (row[i] || '').replace(/&/g, '&amp;')
        .replace(/</g, '&lt;').replace(/>/g, '&gt;')
      return `    <${h}>${val}</${h}>`
    }).join('\n')
    return `  <${rowTag}>\n${fields}\n  </${rowTag}>`
  }).join('\n')
  return `<?xml version="1.0" encoding="UTF-8"?>\n<${rootTag}>\n${xmlRows}\n</${rootTag}>`
}

console.log(csvToXml(csv))
// → <?xml version="1.0" encoding="UTF-8"?>
// → <data><row><name>Alice</name><age>30</age>...</row>...</data>
Python
import csv, io
from xml.etree.ElementTree import Element, SubElement, tostring
from xml.dom.minidom import parseString

csv_string = """name,age,city
Alice,30,Berlin
Bob,25,Tokyo"""

reader = csv.DictReader(io.StringIO(csv_string))
root = Element('data')

for row in reader:
    row_el = SubElement(root, 'row')
    for key, value in row.items():
        child = SubElement(row_el, key)
        child.text = value

# Pretty-print with declaration
raw = tostring(root, encoding='unicode')
pretty = parseString(raw).toprettyxml(indent='  ')
print(pretty)
# → <?xml version="1.0" ?>
# → <data>
# →   <row>
# →     <name>Alice</name>
# →     <age>30</age>
# →     <city>Berlin</city>
# →   </row>
# →   ...
# → </data>
Go
package main

import (
	"encoding/csv"
	"encoding/xml"
	"fmt"
	"os"
	"strings"
)

type Field struct {
	XMLName xml.Name
	Value   string `xml:",chardata"`
}

type Row struct {
	XMLName xml.Name `xml:"row"`
	Fields  []Field
}

type Data struct {
	XMLName xml.Name `xml:"data"`
	Rows    []Row
}

func main() {
	input := "name,age,city\nAlice,30,Berlin\nBob,25,Tokyo"
	r := csv.NewReader(strings.NewReader(input))
	records, _ := r.ReadAll()
	headers := records[0]

	var data Data
	for _, rec := range records[1:] {
		row := Row{}
		for i, h := range headers {
			row.Fields = append(row.Fields, Field{
				XMLName: xml.Name{Local: h},
				Value:   rec[i],
			})
		}
		data.Rows = append(data.Rows, row)
	}

	out, _ := xml.MarshalIndent(data, "", "  ")
	fmt.Println(xml.Header + string(out))
	// → <?xml version="1.0" encoding="UTF-8"?>
	// → <data><row><name>Alice</name>...</row>...</data>
}
CLI (csvkit / xmlstarlet)
# Using Python's csv and xml modules via one-liner
python3 -c "
import csv, sys
from xml.etree.ElementTree import Element, SubElement, tostring
from xml.dom.minidom import parseString

reader = csv.DictReader(sys.stdin)
root = Element('data')
for row in reader:
    r = SubElement(root, 'row')
    for k, v in row.items():
        SubElement(r, k).text = v
print(parseString(tostring(root, encoding='unicode')).toprettyxml(indent='  '))
" < data.csv

# Using Miller (mlr) — a dedicated CSV/JSON/XML tool
mlr --icsv --oxml cat data.csv

คำถามที่พบบ่อย

การแปลง CSV เป็น XML ทำงานอย่างไร?
เครื่องมือจะอ่านแถวแรกของ CSV เป็นหัวคอลัมน์ แต่ละแถวถัดไปจะกลายเป็น XML element และแต่ละค่าใน cell จะถูกห่อด้วย child element ที่ตั้งชื่อตามหัวคอลัมน์ ผลลัพธ์คือเอกสาร XML ที่ well-formed มี root element ที่ประกอบด้วย child element หนึ่งตัวต่อหนึ่งแถวข้อมูล
อักขระพิเศษอย่าง & และ < ในข้อมูล CSV จะถูกจัดการอย่างไร?
เครื่องมือจะทำการ escape XML predefined entities ทั้งห้า: & กลายเป็น &amp;, < กลายเป็น &lt;, > กลายเป็น &gt;, " กลายเป็น &quot; และ ' กลายเป็น &apos; ซึ่งจะสร้าง XML ที่ถูกต้องและไม่ทำให้ parser เกิดปัญหาหรือ well-formedness errors
สามารถกำหนดชื่อ tag เองสำหรับ root และ row elements ได้หรือไม่?
ได้ เครื่องมือให้คุณกำหนดชื่อ root element (ค่าเริ่มต้น: "data") และชื่อ row element (ค่าเริ่มต้น: "row") หัวคอลัมน์จาก CSV จะกลายเป็นชื่อ child element เสมอ หากหัวคอลัมน์มีช่องว่างหรืออักขระที่ไม่ถูกต้องสำหรับชื่อ XML element เครื่องมือจะทำการตรวจสอบและแก้ไขโดยอัตโนมัติ
การแปลง CSV เป็น XML ต่างจากการแปลง CSV เป็น JSON อย่างไร?
การแปลง CSV เป็น XML ให้เอกสาร markup แบบลำดับชั้นพร้อม opening/closing tags, XML declaration และรองรับการตรวจสอบ schema (XSD/DTD) การแปลง CSV เป็น JSON ให้ array ของ key-value objects ที่มีขนาดเล็กกว่า ใช้ XML เมื่อระบบปลายทางต้องการ (SOAP APIs, รูปแบบที่มีการควบคุม, RSS feeds) ใช้ JSON สำหรับ REST APIs, JavaScript frontends และ NoSQL databases
จะตรวจสอบผลลัพธ์ XML ที่สร้างขึ้นได้อย่างไร?
วางผลลัพธ์ใน XML validator ใด ๆ เพื่อตรวจสอบ well-formedness (การซ้อนที่ถูกต้อง การ escape entities อย่างเหมาะสม tags ที่ตรงกัน) สำหรับการตรวจสอบ schema ให้ใช้ไฟล์ XSD และเครื่องมืออย่าง xmllint, Xerces หรือ online XSD validator XML ที่สร้างโดยเครื่องมือนี้จะ well-formed เสมอ แต่ความถูกต้องของ schema ขึ้นอยู่กับว่าโครงสร้างตรงกับ schema ปลายทางหรือไม่
เครื่องมือรองรับไฟล์ CSV ขนาดใหญ่ได้หรือไม่?
เครื่องมือทำงานในเบราว์เซอร์ ดังนั้นประสิทธิภาพจึงขึ้นอยู่กับหน่วยความจำที่มีอยู่ ไฟล์ขนาดไม่กี่ MB (หลายหมื่นแถว) สามารถแปลงได้โดยไม่มีปัญหาบนฮาร์ดแวร์ยุคใหม่ สำหรับไฟล์ขนาดใหญ่มาก (100MB ขึ้นไป) ควรพิจารณาใช้ command-line tool เช่น modules csv และ xml.etree ของ Python หรือ packages encoding/csv และ encoding/xml ของ Go ซึ่งประมวลผลข้อมูลแบบ stream โดยไม่ต้องโหลดทุกอย่างเข้าหน่วยความจำ
XML ที่สร้างขึ้นใช้กับ XSLT transformations ได้หรือไม่?
ได้ ผลลัพธ์เป็น XML มาตรฐานที่ well-formed พร้อม declaration และโครงสร้าง element ที่สอดคล้องกัน คุณสามารถใช้ XSLT stylesheet ใด ๆ เพื่อแปลงเป็น HTML, XML schema อื่น หรือข้อความธรรมดา โครงสร้างที่คาดเดาได้ (root > row > field elements) ทำให้การเขียน XPath selectors และ XSLT templates เป็นเรื่องง่าย