ToolDeck

تحويل CSV إلى XML

تحويل بيانات CSV إلى صيغة XML

جرب مثالاً

مدخل CSV

مخرج XML

يعمل محليًا · آمن للصق الأسرار
سيظهر مخرج XML هنا…

ما هو تحويل CSV إلى XML؟

يُحوّل تحويل CSV إلى XML القيمَ المفصولة بفواصل إلى مستندات XML (لغة الترميز القابلة للتوسعة). يصبح كل صف في ملف CSV عنصراً في XML، ويُعيَّن كل عنوان عمود اسماً لعنصر فرعي. والنتيجة مستند هرمي يصف نفسه بنفسه، يمكن التحقق من صحته مقابل مخطط (XSD أو DTD) ومعالجته بأدوات XML القياسية كـ XSLT وXPath ومحللات SAX/DOM.

يُعدّ XML معياراً لتبادل البيانات منذ أن نشر W3C مواصفة XML 1.0 عام 1998. وعلى الرغم من أن JSON حلّ محل 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، كالحقول المقتبسة التي تحتوي على فواصل أو أسطر جديدة، وعلامات الاقتباس المزدوجة المُهرَّبة، والمحددات المتنوعة. أما على صعيد XML، فيجب تهريب الكيانات المُعرَّفة مسبقاً الخمسة (& < > " ')، وتوليد أسماء عناصر صالحة من العناوين باستبدال المسافات والأحرف الخاصة، وإنتاج مخرج صحيح الشكل مع تصريح XML مناسب وترميز موحّد.

لماذا تستخدم محوّل CSV إلى XML؟

كتابة XML يدوياً من بيانات جداول البيانات عملية بطيئة وعرضة للأخطاء. فنسيان وسم إغلاق أو إهمال تهريب علامة & يُنتج XML غير صالح يُعطّل المحللات اللاحقة. يتولى هذا المحوّل التحليل والتهريب وتوليد العناصر في خطوة واحدة.

تحويل فوري في متصفحك
الصق بيانات CSV واحصل على مخرج XML صحيح الشكل مع تصريح مناسب وعنصر جذري وعناصر فرعية متداخلة. لا حاجة إلى أدوات سطر الأوامر أو تثبيت أي مكتبات.
🔒
بياناتك تبقى خاصة
يعمل التحويل بالكامل محلياً في متصفحك باستخدام JavaScript. لا يُرفع ملف CSV إلى أي خادم، ولا يُسجَّل، ولا يُخزَّن في أي مكان خارج جهازك.
🎯
XML صالح وصحيح الشكل
يُهرّب المخرج كيانات XML، ويُصحّح أسماء العناوين لتصبح وسوم عناصر صالحة، ويُنتج ترميزاً متداخلاً بشكل صحيح يجتاز أي مدقق XML أو أداة فحص.
📋
يدعم أي لهجة CSV
يكتشف تلقائياً الفواصل والفواصل المنقوطة وعلامات التبويب والأنابيب كمحددات. يدعم قواعد الاقتباس وفق RFC 4180 بما يشمل علامات الاقتباس المزدوجة المُهرَّبة والحقول متعددة الأسطر وملفات UTF-8 المبدوءة بـ BOM.

حالات استخدام تحويل CSV إلى XML

التكامل مع SOAP والواجهات القديمة
لا تزال كثير من أنظمة المؤسسات تستخدم خدمات ويب SOAP تستلزم أجسام طلبات XML. حوّل تصدير بيانات CSV إلى حمولات XML تتطابق مع مخطط WSDL للخدمة قبل إرسال الطلبات.
توليد ملفات الإعداد
أنشئ قوائم تبعيات Maven pom.xml أو ملفات موارد Android أو تعريفات Spring bean من جدول بيانات يضم التبعيات والسلاسل أو مدخلات الإعداد. أنتج إعدادات 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. كثيراً ما تبدأ سير عمل إدارة المحتوى بجدول بيانات من المنشورات يحتاج إلى نشره كتغذية RSS.
تعليم أساسيات XML
يستطيع الطلاب المتعلمون XML لصق بيانات CSV مألوفة ومشاهدة التسلسل الهرمي للعناصر والتداخل وتهريب الكيانات الناتجة. تُجسّد المقارنة بين المدخل والمخرج مفاهيم مجردة كالتشكيل الصحيح والصلاحية.

مرجع تعيين 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 بسبب حمل الوسوم. مطلوب في واجهات SOAP وOffice Open XML وRSS/Atom والكثير من القطاعات المُنظَّمة.

أمثلة برمجية

فيما يلي أمثلة عملية لتحويل CSV إلى XML بلغات مختلفة. يُحلّل كل مثال صف العناوين في CSV كأسماء وسوم للعناصر، ويُغلّف كل صف بيانات في عنصر حاوٍ، ويُهرّب كيانات XML في محتوى الخلايا.

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: تصبح & هي &amp;amp;، و< هي &amp;lt;، و> هي &amp;gt;، و" هي &amp;quot;، و' هي &amp;apos;. ينتج عن ذلك XML صالح لن يُعطّل المحللات أو يُسبّب أخطاء في التشكيل.
هل يمكنني استخدام أسماء وسوم مخصصة للعنصر الجذري وعنصر الصف؟
نعم. تتيح الأداة تعيين اسم العنصر الجذري (الافتراضي: "data") واسم عنصر الصف (الافتراضي: "row"). تصبح عناوين الأعمدة دائماً أسماء العناصر الفرعية. وإذا احتوى عنوان على مسافات أو أحرف غير صالحة في أسماء عناصر XML، تُصحّحها الأداة تلقائياً.
ما الفرق بين تحويل CSV إلى XML وتحويله إلى JSON؟
يُنتج تحويل CSV إلى XML مستند ترميز هرمي بوسوم فتح وإغلاق وتصريح XML ودعم للتحقق من الصحة مقابل مخطط (XSD/DTD). في المقابل، يُنتج تحويل CSV إلى JSON مصفوفة أخف وزناً من كائنات مفتاح-قيمة. استخدم XML حين يستلزمه النظام المستهدف (واجهات SOAP، الصيغ المُنظَّمة، تغذيات RSS). استخدم JSON لواجهات REST ومقدمات JavaScript وقواعد بيانات NoSQL.
كيف أتحقق من صحة مخرج XML الناتج؟
الصق المخرج في أي مدقق XML للتحقق من صحة تشكيله (التداخل الصحيح، تهريب الكيانات، تطابق الوسوم). للتحقق من الصحة مقابل مخطط، قدّم ملف XSD واستخدم أداة مثل xmllint أو Xerces أو أداة تحقق XSD عبر الإنترنت. المخرج الذي تُنتجه هذه الأداة صحيح التشكيل دائماً، غير أن الصحة مقابل المخطط تعتمد على مطابقة البنية للمخطط المستهدف.
هل يتعامل المحوّل مع ملفات CSV الكبيرة؟
تعمل الأداة في متصفحك، لذا يعتمد الأداء على الذاكرة المتاحة. تُحوَّل الملفات حتى بضعة ميغابايتات (عشرات الآلاف من الصفوف) دون مشكلات على الأجهزة الحديثة. بالنسبة للملفات الكبيرة جداً (100 ميغابايت وأكثر)، فكّر في أداة سطر الأوامر مثل وحدتَي csv وxml.etree في Python أو حزمتَي encoding/csv وencoding/xml في Go، إذ تعالج البيانات تدفقياً دون تحميل كل شيء في الذاكرة.
هل المخرج XML متوافق مع تحويلات XSLT؟
نعم. المخرج XML قياسي صحيح التشكيل مع تصريح وبنية عناصر متسقة. يمكنك تطبيق أي ورقة أنماط XSLT لتحويله إلى HTML أو مخطط XML آخر أو نص عادي. تجعل البنية المتوقعة (جذر > صف > عناصر حقول) كتابة محددات XPath وقوالب XSLT أمراً سهلاً ومباشراً.