ToolDeck

تبدیل CSV به XML

داده‌های CSV را به فرمت XML تبدیل کنید

یک مثال امتحان کنید

ورودی CSV

خروجی XML

به‌صورت محلی اجرا می‌شود · جای‌گذاری اسرار امن است
خروجی XML اینجا نمایش داده می‌شود…

تبدیل CSV به XML چیست؟

تبدیل CSV به XML، مقادیر جداشده با کاما را به اسناد Extensible Markup Language (XML) تبدیل می‌کند. هر سطر CSV به یک عنصر XML تبدیل می‌شود و هر سرصفحه ستون به نام یک عنصر فرزند تبدیل می‌شود. نتیجه یک سند سلسله‌مراتبی و خودگویا است که سیستم‌ها می‌توانند آن را در برابر یک اسکیما (XSD یا DTD) اعتبارسنجی کنند و با ابزارهای استاندارد XML مانند XSLT، XPath و تجزیه‌کننده‌های SAX/DOM پردازش کنند.

XML از زمانی که W3C مشخصات XML 1.0 را در سال ۱۹۹۸ منتشر کرد، به‌عنوان استاندارد تبادل داده شناخته می‌شود. اگرچه JSON در بسیاری از APIهای وب جای XML را گرفته است، XML همچنان فرمت موردنیاز برای سرویس‌های وب SOAP، فیدهای RSS/Atom، گرافیک‌های SVG، اسناد Office Open XML (مانند .docx و .xlsx)، فایل‌های منبع Android، پیکربندی‌های ساخت Maven/Gradle و صنایع تنظیم‌شده‌ای مانند بهداشت (HL7 CDA)، امور مالی (FpML، XBRL) و دولت (NIEM) است. وقتی داده منبع شما یک صفحه‌گسترده یا صادرات پایگاه داده باشد، تبدیل CSV به XML روش ورود آن به این سیستم‌هاست.

یک مبدل صحیح CSV به XML باید حالت‌های خاص RFC 4180 را مدیریت کند: فیلدهای نقل‌قول‌دار حاوی کاما یا خط جدید، گیومه‌های دوتایی escape‌شده و جداکننده‌های متفاوت. در طرف XML نیز باید پنج موجودیت از پیش‌تعریف‌شده XML را escape کند (& < > " ')، نام عناصر معتبری از سرصفحه‌ها تولید کند (با جایگزینی فاصله‌ها و کاراکترهای غیرمجاز) و خروجی خوش‌ساخت با اعلان XML مناسب و کدگذاری یکنواخت تولید کند.

چرا از مبدل CSV به XML استفاده کنیم؟

نوشتن XML به‌صورت دستی از داده‌های صفحه‌گسترده کند و مستعد خطاست. یک تگ بسته‌شده فراموش‌شده یا علامت & بدون escape، XML نامعتبری تولید می‌کند که تجزیه‌کننده‌های پایین‌دست را خراب می‌کند. این مبدل تجزیه، escape کردن و تولید عنصر را در یک مرحله انجام می‌دهد.

تبدیل فوری در مرورگر
CSV را بچسبانید و خروجی XML خوش‌ساخت با اعلان مناسب، عنصر ریشه و عناصر فرزند تودرتو دریافت کنید. بدون ابزار خط‌فرمان یا نصب کتابخانه.
🔒
حفظ حریم خصوصی داده
تمام تبدیل به‌صورت محلی در مرورگر شما با استفاده از JavaScript اجرا می‌شود. داده‌های CSV شما هرگز به سرور ارسال، ثبت یا در هیچ‌جایی خارج از دستگاه شما ذخیره نمی‌شود.
🎯
تولید XML معتبر و خوش‌ساخت
خروجی موجودیت‌های XML را escape می‌کند، نام سرصفحه‌ها را به تگ‌های عنصر معتبر پاکسازی می‌کند و نشانه‌گذاری تودرتوی صحیحی تولید می‌کند که از اعتبارسنجی هر validator یا linter XML عبور می‌کند.
📋
پشتیبانی از هر گویش CSV
کاما، سمی‌کالن، تب و پایپ را به‌عنوان جداکننده به‌صورت خودکار تشخیص می‌دهد. از قوانین نقل‌قول RFC 4180 از جمله گیومه‌های دوتایی escape‌شده، فیلدهای چندسطری و فایل‌های UTF-8 با BOM پشتیبانی می‌کند.

موارد استفاده تبدیل CSV به XML

یکپارچه‌سازی با SOAP و APIهای قدیمی
بسیاری از سیستم‌های سازمانی هنوز از سرویس‌های وب SOAP استفاده می‌کنند که به بدنه‌های درخواست XML نیاز دارند. صادرات داده CSV را به بارهای XML تبدیل کنید که با اسکیما WSDL سرویس مطابقت داشته باشد و سپس درخواست‌ها را ارسال کنید.
تولید فایل‌های پیکربندی ساخت
لیست وابستگی‌های pom.xml ماون، فایل‌های منبع Android یا تعریف bean های Spring را از یک صفحه‌گسترده وابستگی‌ها، رشته‌ها یا مدخل‌های پیکربندی تولید کنید. پیکربندی‌های XML را به‌صورت دسته‌ای از یک منبع CSV واحد تولید کنید.
ETL در پایپ‌لاین داده
صادرات CSV از پایگاه‌های داده یا ابزارهای تحلیلی را به پایپ‌لاین‌های ETL مبتنی بر XML تزریق کنید. ابزارهایی مانند Apache NiFi، Talend و SSIS ورودی XML را برای جریان‌های کاری تبدیل که به اعتبارسنجی اسکیما در هر مرحله نیاز دارند می‌پذیرند.
گزارش‌دهی نظارتی و انطباقی
صنایعی مانند بهداشت (HL7 CDA)، امور مالی (XBRL، FpML) و دولت (NIEM) ارسال‌های با فرمت XML را الزامی می‌کنند. داده‌های انطباقی جدولی را به ساختار XML موردنیاز قبل از ارسال تبدیل کنید.
تولید فید RSS و Atom
یک لیست CSV از مقالات، عنوان‌ها و تاریخ‌ها را به یک فید RSS 2.0 یا Atom تبدیل کنید. جریان‌های کاری مدیریت محتوا اغلب با یک صفحه‌گسترده از پست‌ها آغاز می‌شوند که باید به‌عنوان فید توزیع محتوا منتشر شوند.
آموزش مبانی XML
دانش‌آموزانی که XML یاد می‌گیرند می‌توانند داده‌های CSV آشنا را بچسبانند و سلسله‌مراتب عناصر، تودرتوسازی و escape موجودیت‌ها را در خروجی ببینند. مقایسه ورودی و خروجی، مفاهیم انتزاعی مانند خوش‌ساخت بودن و اعتبار را ملموس می‌کند.

مرجع نگاشت CSV به XML

درک نحوه نگاشت هر بخش از یک فایل CSV به ساختار XML به شما کمک می‌کند فرمت خروجی را پیش‌بینی کنید و قبل از تبدیل داده‌هایتان را تنظیم کنید.

مفهوم CSVمعادل XMLجزئیات
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 یک فرمت تخت مبتنی بر جداکننده است که اسکیما یا نوع داده داخلی ندارد. XML یک زبان نشانه‌گذاری سلسله‌مراتبی و خودگویا است که از اسکیما، فضاهای نام و تودرتوسازی پیچیده پشتیبانی می‌کند. انتخاب بین آن‌ها به نیازهای سیستم پایین‌دست شما بستگی دارد.

CSV
متن ساده، یک رکورد در هر خط. بدون نوع داده: هر مقدار یک رشته است. بدون سلسله‌مراتب یا تودرتوسازی. حجم فایل حداقل. پشتیبانی گسترده توسط صفحه‌گسترده‌ها، پایگاه‌های داده و زبان‌های اسکریپت‌نویسی. تعریف‌شده در RFC 4180. بهترین گزینه برای انتقال داده‌های جدولی ساده بین سیستم‌هایی که هر دو چیدمان ستون را می‌فهمند.
XML
نشانه‌گذاری سلسله‌مراتبی با تگ‌های باز و بسته. از ویژگی‌ها، فضاهای نام، محتوای مختلط و بخش‌های CDATA پشتیبانی می‌کند. می‌توان آن را در برابر اسکیماهای XSD یا DTD اعتبارسنجی کرد. توسط XSLT، XPath، SAX و تجزیه‌کننده‌های DOM پردازش می‌شود. حجم فایل به‌دلیل سربار تگ‌ها بزرگ‌تر از CSV است. موردنیاز APIهای SOAP، Office Open XML، RSS/Atom و بسیاری از صنایع تنظیم‌شده است.

نمونه‌های کد

در زیر نمونه‌های عملی تبدیل CSV به XML در زبان‌های مختلف آمده است. هر نمونه سطر سرصفحه CSV را به‌عنوان نام تگ عنصر تجزیه می‌کند، هر سطر داده را در یک عنصر کانتینر می‌پوشاند و موجودیت‌های XML را در محتوای سلول escape می‌کند.

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 تبدیل می‌شود و هر مقدار سلول در یک عنصر فرزند به نام سرصفحه ستون خود پوشانده می‌شود. نتیجه یک سند XML خوش‌ساخت با یک عنصر ریشه است که یک عنصر فرزند به ازای هر سطر داده دارد.
با کاراکترهای خاصی مانند & و < در داده‌های CSV چه اتفاقی می‌افتد؟
مبدل همه پنج موجودیت از پیش‌تعریف‌شده XML را escape می‌کند: & به &amp; تبدیل می‌شود، < به &lt;، > به &gt;، " به &quot; و ' به &apos;. این XML معتبری تولید می‌کند که تجزیه‌کننده‌ها را خراب نمی‌کند و خطاهای خوش‌ساخت بودن ایجاد نمی‌کند.
آیا می‌توانم نام تگ سفارشی برای عناصر ریشه و ردیف تنظیم کنم؟
بله. ابزار به شما امکان می‌دهد نام عنصر ریشه (پیش‌فرض: «data») و نام عنصر ردیف (پیش‌فرض: «row») را تنظیم کنید. سرصفحه‌های ستون CSV همیشه به نام عناصر فرزند تبدیل می‌شوند. اگر سرصفحه‌ای شامل فاصله یا کاراکترهای غیرمجاز در نام عناصر XML باشد، ابزار آن‌ها را به‌صورت خودکار پاکسازی می‌کند.
تفاوت بین تبدیل CSV به XML و CSV به JSON چیست؟
تبدیل CSV به XML یک سند نشانه‌گذاری سلسله‌مراتبی با تگ‌های باز/بسته، اعلان XML و پشتیبانی از اعتبارسنجی اسکیما (XSD/DTD) تولید می‌کند. تبدیل CSV به JSON یک آرایه سبک‌تر از اشیاء کلید-مقدار تولید می‌کند. از XML استفاده کنید وقتی سیستم هدف به آن نیاز دارد (APIهای SOAP، فرمت‌های تنظیم‌شده، فیدهای RSS). از JSON برای REST APIها، فرانت‌اندهای JavaScript و پایگاه‌های داده NoSQL استفاده کنید.
چگونه خروجی XML تولیدشده را اعتبارسنجی کنم؟
خروجی را در هر اعتبارسنج XML بچسبانید تا خوش‌ساخت بودن (تودرتوسازی صحیح، escape مناسب موجودیت‌ها، تگ‌های منطبق) بررسی شود. برای اعتبارسنجی اسکیما، یک فایل XSD ارائه دهید و از ابزاری مانند xmllint، Xerces یا یک اعتبارسنج XSD آنلاین استفاده کنید. XML تولیدشده توسط این ابزار همیشه خوش‌ساخت است، اما اعتبار اسکیما به تطابق ساختار با اسکیمای هدف شما بستگی دارد.
آیا مبدل فایل‌های CSV بزرگ را مدیریت می‌کند؟
ابزار در مرورگر شما اجرا می‌شود، بنابراین عملکرد به حافظه موجود بستگی دارد. فایل‌های تا چند مگابایت (ده‌ها هزار سطر) روی سخت‌افزار مدرن بدون مشکل تبدیل می‌شوند. برای فایل‌های بسیار بزرگ (۱۰۰ مگابایت به بالا)، از یک ابزار خط‌فرمان مانند ماژول‌های csv و xml.etree پایتون یا بسته‌های encoding/csv و encoding/xml زبان Go استفاده کنید که داده را به‌صورت جریانی بدون بارگذاری کامل در حافظه پردازش می‌کنند.
آیا XML تولیدشده با تبدیل‌های XSLT سازگار است؟
بله. خروجی، XML استاندارد خوش‌ساخت با اعلان و ساختار عنصری یکپارچه است. می‌توانید هر stylesheet XSLT را برای تبدیل آن به HTML، اسکیمای XML دیگر یا متن ساده اعمال کنید. ساختار قابل پیش‌بینی (عناصر root > row > field) نوشتن انتخاب‌گرهای XPath و قالب‌های XSLT را ساده می‌کند.