ToolDeck

CSV থেকে XML রূপান্তরকারী

CSV ডেটাকে XML ফরম্যাটে রূপান্তর করুন

একটি উদাহরণ চেষ্টা করুন

CSV ইনপুট

XML আউটপুট

স্থানীয়ভাবে চলে · গোপন তথ্য পেস্ট করা নিরাপদ
XML আউটপুট এখানে দেখা যাবে…

CSV থেকে XML রূপান্তর কী?

CSV থেকে XML রূপান্তর কমা-বিভাজিত মানগুলোকে Extensible Markup Language (XML) নথিতে পরিণত করে। CSV-এর প্রতিটি সারি একটি XML উপাদানে পরিণত হয় এবং প্রতিটি কলাম হেডার একটি চাইল্ড উপাদান ট্যাগ নামে রূপান্তরিত হয়। ফলাফল হিসেবে পাওয়া যায় একটি শ্রেণিবদ্ধ, স্বব্যাখ্যামূলক নথি — যা সিস্টেম স্কিমার (XSD বা DTD) বিপরীতে যাচাই করতে পারে এবং XSLT, XPath, SAX/DOM পার্সারের মতো মানক XML টুল দিয়ে প্রক্রিয়া করতে পারে।

W3C ১৯৯৮ সালে XML 1.0 স্পেসিফিকেশন প্রকাশ করার পর থেকে XML ডেটা বিনিময়ের একটি মানদণ্ড হয়ে আসছে। অনেক ওয়েব API-এ JSON এখন XML-কে প্রতিস্থাপন করেছে, তবে SOAP ওয়েব সার্ভিস, RSS/Atom ফিড, SVG গ্রাফিক্স, Office Open XML নথি (.docx, .xlsx), Android রিসোর্স ফাইল, Maven/Gradle বিল্ড কনফিগ, এবং স্বাস্থ্যসেবা (HL7 CDA), অর্থায়ন (FpML, XBRL) ও সরকারি (NIEM) খাতের মতো নিয়ন্ত্রিত শিল্পে XML এখনও আবশ্যক ফরম্যাট। যখন আপনার উৎস ডেটা স্প্রেডশিট বা ডেটাবেজ এক্সপোর্ট, তখন CSV থেকে XML রূপান্তরই এসব সিস্টেমে ডেটা পাঠানোর পথ।

একটি সঠিক CSV থেকে XML রূপান্তরকারীকে RFC 4180-এর প্রান্তিক ক্ষেত্রগুলো সামলাতে হয়: কমা বা নতুন লাইন সম্বলিত উদ্ধৃত ক্ষেত্র, এস্কেপ করা দ্বিগুণ উদ্ধৃতিচিহ্ন এবং ভিন্ন বিভাজক। XML পক্ষে, এটিকে পাঁচটি পূর্বনির্ধারিত XML এনটিটি এস্কেপ করতে হবে (& < > " '), হেডার থেকে বৈধ উপাদান নাম তৈরি করতে হবে (ফাঁকা জায়গা ও বিশেষ অক্ষর প্রতিস্থাপন করে), এবং সঠিক XML ঘোষণা ও সামঞ্জস্যপূর্ণ এনকোডিং সহ সুগঠিত আউটপুট তৈরি করতে হবে।

CSV থেকে XML কনভার্টার কেন ব্যবহার করবেন?

স্প্রেডশিট ডেটা থেকে হাতে XML লেখা ধীরগতির ও ত্রুটিপ্রবণ। একটি ক্লোজিং ট্যাগ বাদ দেওয়া বা অ্যাম্পার্স্যান্ড এস্কেপ করতে ভুলে যাওয়া অবৈধ XML তৈরি করে যা পরবর্তী পার্সারগুলোকে ভেঙে দেয়। এই কনভার্টার একটি ধাপেই পার্সিং, এস্কেপিং এবং উপাদান তৈরি সম্পন্ন করে।

ব্রাউজারে তাৎক্ষণিকভাবে রূপান্তর করুন
CSV পেস্ট করুন এবং সঠিক ঘোষণা, রুট উপাদান ও নেস্টেড চাইল্ড উপাদান সহ সুগঠিত XML আউটপুট পান। কমান্ড-লাইন টুল বা লাইব্রেরি ইনস্টল করার প্রয়োজন নেই।
🔒
ডেটা গোপন রাখুন
সমস্ত রূপান্তর JavaScript ব্যবহার করে আপনার ব্রাউজারে স্থানীয়ভাবে চলে। আপনার CSV ডেটা কখনও সার্ভারে আপলোড হয় না, লগ করা হয় না এবং আপনার মেশিনের বাইরে কোথাও সংরক্ষিত হয় না।
🎯
বৈধ, সুগঠিত XML তৈরি করুন
আউটপুট XML এনটিটি এস্কেপ করে, হেডার নামগুলোকে বৈধ উপাদান ট্যাগে রূপান্তরিত করে, এবং সঠিকভাবে নেস্টেড মার্কআপ তৈরি করে যা যেকোনো XML ভ্যালিডেটর বা লিন্টারে উত্তীর্ণ হয়।
📋
যেকোনো CSV উপভাষা সামলান
কমা, সেমিকোলন, ট্যাব ও পাইপ স্বয়ংক্রিয়ভাবে বিভাজক হিসেবে শনাক্ত করে। এস্কেপ করা দ্বিগুণ উদ্ধৃতিচিহ্ন, বহুলাইন ক্ষেত্র এবং BOM-পূর্বযুক্ত UTF-8 ফাইলসহ RFC 4180 উদ্ধৃতি নিয়মকানুন সমর্থন করে।

CSV থেকে XML ব্যবহারের ক্ষেত্র

SOAP ও লিগ্যাসি API ইন্টিগ্রেশন
অনেক এন্টারপ্রাইজ সিস্টেম এখনও SOAP ওয়েব সার্ভিস ব্যবহার করে যার জন্য XML অনুরোধ বডি প্রয়োজন। অনুরোধ পাঠানোর আগে CSV ডেটা এক্সপোর্টকে সার্ভিসের WSDL স্কিমার সাথে মেলে এমন XML পেলোডে রূপান্তর করুন।
বিল্ড কনফিগারেশন ফাইল তৈরি করুন
নির্ভরতা, স্ট্রিং বা কনফিগ এন্ট্রির স্প্রেডশিট থেকে Maven pom.xml নির্ভরতার তালিকা, Android রিসোর্স ফাইল বা Spring bean সংজ্ঞা তৈরি করুন। একটি CSV উৎস থেকে একসাথে একাধিক XML কনফিগ তৈরি করুন।
ডেটা পাইপলাইন ETL
ডেটাবেজ বা বিশ্লেষণ টুলের CSV এক্সপোর্টগুলোকে XML-ভিত্তিক ETL পাইপলাইনে প্রবেশ করান। Apache NiFi, Talend এবং SSIS-এর মতো টুলগুলো রূপান্তর কর্মপ্রবাহে XML ইনপুট গ্রহণ করে যেখানে প্রতিটি ধাপে স্কিমা যাচাইয়ের প্রয়োজন হয়।
নিয়ন্ত্রক ও সম্মতি রিপোর্টিং
স্বাস্থ্যসেবা (HL7 CDA), অর্থায়ন (XBRL, FpML) এবং সরকারি (NIEM) খাতে XML-ফরম্যাটে জমা দেওয়া বাধ্যতামূলক। জমা দেওয়ার আগে সারণিবদ্ধ সম্মতি ডেটাকে প্রয়োজনীয় XML কাঠামোতে রূপান্তর করুন।
RSS ও Atom ফিড তৈরি করুন
নিবন্ধ, শিরোনাম ও তারিখের CSV তালিকাকে RSS 2.0 বা Atom ফিডে রূপান্তর করুন। কন্টেন্ট ম্যানেজমেন্ট কর্মপ্রবাহ প্রায়ই পোস্টের স্প্রেডশিট দিয়ে শুরু হয় যা সিন্ডিকেশন ফিড হিসেবে প্রকাশ করতে হয়।
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 API, 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;, < হয় &lt;, > হয় &gt;, " হয় &quot;, এবং ' হয় &apos;। এটি বৈধ XML তৈরি করে যা পার্সার ভাঙবে না বা সুগঠনতা ত্রুটি সৃষ্টি করবে না।
আমি কি রুট ও সারি উপাদানের জন্য কাস্টম ট্যাগ নাম ব্যবহার করতে পারি?
হ্যাঁ। টুলটি রুট উপাদানের নাম (ডিফল্ট: "data") এবং সারি উপাদানের নাম (ডিফল্ট: "row") নির্ধারণ করতে দেয়। CSV-এর কলাম হেডারগুলো সর্বদা চাইল্ড উপাদানের নাম হয়। কোনো হেডারে ফাঁকা জায়গা বা XML উপাদান নামে অবৈধ অক্ষর থাকলে টুল স্বয়ংক্রিয়ভাবে সেগুলো পরিষ্কার করে।
CSV থেকে XML এবং CSV থেকে JSON-এর মধ্যে পার্থক্য কী?
CSV থেকে XML শুরু ও শেষ ট্যাগ, XML ঘোষণা এবং স্কিমা যাচাই (XSD/DTD) সমর্থন সহ একটি শ্রেণিবদ্ধ মার্কআপ নথি তৈরি করে। CSV থেকে JSON কী-মান অবজেক্টের একটি লাইটওয়েট অ্যারে তৈরি করে। আপনার টার্গেট সিস্টেম XML চাইলে (SOAP API, নিয়ন্ত্রিত ফরম্যাট, RSS ফিড) XML ব্যবহার করুন। REST API, JavaScript ফ্রন্টএন্ড এবং NoSQL ডেটাবেজের জন্য JSON ব্যবহার করুন।
তৈরি XML আউটপুট কীভাবে যাচাই করব?
সুগঠনতা পরীক্ষার জন্য (সঠিক নেস্টিং, সঠিক এনটিটি এস্কেপিং, মিলে যাওয়া ট্যাগ) আউটপুট যেকোনো XML ভ্যালিডেটরে পেস্ট করুন। স্কিমা যাচাইয়ের জন্য একটি XSD ফাইল প্রদান করুন এবং xmllint, Xerces বা অনলাইন XSD ভ্যালিডেটরের মতো টুল ব্যবহার করুন। এই টুলের তৈরি XML সর্বদা সুগঠিত, তবে স্কিমা বৈধতা নির্ভর করে কাঠামো আপনার টার্গেট স্কিমার সাথে মেলে কিনা তার উপর।
কনভার্টার কি বড় CSV ফাইল সামলাতে পারে?
টুলটি আপনার ব্রাউজারে চলে, তাই কার্যক্ষমতা উপলব্ধ মেমোরির উপর নির্ভর করে। আধুনিক হার্ডওয়্যারে কয়েক মেগাবাইট (দশ হাজার সারি) পর্যন্ত ফাইল সমস্যা ছাড়াই রূপান্তরিত হয়। খুব বড় ফাইলের (১০০MB+) জন্য Python-এর csv ও xml.etree মডিউল বা Go-এর encoding/csv ও encoding/xml প্যাকেজের মতো কমান্ড-লাইন টুল বিবেচনা করুন, যেগুলো সবকিছু মেমোরিতে লোড না করে স্ট্রিম হিসেবে ডেটা প্রক্রিয়া করে।
তৈরি XML কি XSLT রূপান্তরের সাথে সামঞ্জস্যপূর্ণ?
হ্যাঁ। আউটপুট ঘোষণা ও সামঞ্জস্যপূর্ণ উপাদান কাঠামো সহ মানক সুগঠিত XML। আপনি যেকোনো XSLT স্টাইলশিট প্রয়োগ করে এটিকে HTML, অন্য XML স্কিমা বা সরল পাঠ্যে রূপান্তর করতে পারেন। পূর্বানুমানযোগ্য কাঠামো (root > row > field উপাদান) XPath সিলেক্টর ও XSLT টেমপ্লেট লেখাকে সহজ করে তোলে।