C# (.NET) में XML के साथ कार्य: बुनियादी से उन्नत तकनीकों तक
XML (eXtensible Markup Language) .NET इकोसिस्टम में संरचित डेटा को संग्रहीत और स्थानांतरित करने के लिए प्रमुख प्रारूपों में से एक बना हुआ है। चाहे आप कॉन्फ़िगरेशन फ़ाइलें बना रहे हों, वेब सेवाओं के साथ डेटा का आदान-प्रदान कर रहे हों, या दस्तावेज़ों को प्रोसेस कर रहे हों, C# के अंतर्निहित उपकरण XML के साथ कार्य करने के लिए लचीले और कुशल साधन प्रदान करते हैं। इस लेख में, हम तीन मुख्य दृष्टिकोणों पर चर्चा करेंगे: क्लासिक XmlDocument, आधुनिक XDocument (LINQ to XML), और स्ट्रीम-आधारित XmlReader/XmlWriter।
1. क्लासिक XmlDocument (DOM मॉडल)
System.Xml.XmlDocument क्लास DOM (Document Object Model) को लागू करता है - यह पूरे XML दस्तावेज़ को नोड्स के ट्री के रूप में रैम में लोड करता है। यह छोटे और मध्यम आकार के दस्तावेज़ों के लिए सुविधाजनक है, जब बार-बार नेविगेशन और संशोधन की आवश्यकता होती है।
XML लोड करना और पढ़ना
using System.Xml;
XmlDocument doc = new XmlDocument();doc.Load("books.xml"); // फ़ाइल से लोड करना
// रूट एलिमेंट प्राप्त करनाXmlElement root = doc.DocumentElement;
// सभी book एलिमेंट्स का चयन करनाXmlNodeList books = root.SelectNodes("//book");foreach (XmlNode book in books){ string title = book["title"].InnerText; string author = book["author"].InnerText; Console.WriteLine($"{title} — {author}");}XML बनाना और सहेजना
XmlDocument doc = new XmlDocument();XmlElement root = doc.CreateElement("library");doc.AppendChild(root);
XmlElement book = doc.CreateElement("book");book.SetAttribute("id", "1");
XmlElement title = doc.CreateElement("title");title.InnerText = "वॉर एंड पीस";book.AppendChild(title);
root.AppendChild(book);doc.Save("library.xml");2. आधुनिक LINQ to XML (XDocument)
System.Xml.Linq नेमस्पेस अधिक संक्षिप्त और कार्यात्मक API प्रदान करता है। XDocument और XElement आपको LINQ शैली में कोड लिखने की अनुमति देते हैं, जो विशेष रूप से क्वेरी और ट्रांसफ़ॉर्मेशन के लिए सुविधाजनक है।
XDocument के साथ पार्सिंग
using System.Xml.Linq;
XDocument doc = XDocument.Load("books.xml");
var books = doc.Descendants("book") .Select(b => new { Title = b.Element("title")?.Value, Author = b.Element("author")?.Value, Year = (int)b.Element("year") });
foreach (var book in books){ Console.WriteLine($"{book.Title} ({book.Year})");}कंस्ट्रक्टर के साथ XML बनाना
XDocument doc = new XDocument( new XElement("library", new XElement("book", new XAttribute("id", "1"), new XElement("title", "क्राइम एंड पनिशमेंट"), new XElement("author", "एफ.एम. दोस्तोयेव्स्की") ) ));doc.Save("library.xml");XDocument के लाभ:
- डेटा फ़िल्टरिंग और प्रोजेक्शन के लिए LINQ क्वेरी का समर्थन।
- नेस्टेड कंस्ट्रक्टर के माध्यम से एलिमेंट बनाने का अधिक पठनीय सिंटैक्स।
XNamespaceके माध्यम से नेमस्पेस की स्वचालित हैंडलिंग।
3. स्ट्रीम प्रोसेसिंग: XmlReader और XmlWriter
बड़ी XML फ़ाइलों (सैकड़ों मेगाबाइट या गीगाबाइट) के साथ कार्य करने के लिए, XmlDocument या XDocument का उपयोग मेमोरी ओवरफ़्लो का कारण बन सकता है। ऐसे मामलों में, स्ट्रीम-आधारित क्लासेस XmlReader और XmlWriter का उपयोग किया जाता है, जो पूरे दस्तावेज़ को लोड किए बिना डेटा को क्रमिक रूप से प्रोसेस करते हैं।
XmlReader के साथ पढ़ना
using (XmlReader reader = XmlReader.Create("large.xml")){ while (reader.Read()) { if (reader.NodeType == XmlNodeType.Element && reader.Name == "record") { string id = reader.Get