C# (.NET) में XML के साथ काम करना: पूर्ण गाइड
XML (eXtensible Markup Language) .NET इकोसिस्टम में संरचित डेटा को स्टोर और ट्रांसफर करने के लिए एक प्रमुख फॉर्मेट बना हुआ है। C# में XML के साथ काम करने के लिए कई शक्तिशाली लाइब्रेरी और तरीके उपलब्ध हैं, जैसे क्लासिक XmlDocument से लेकर आधुनिक LINQ to XML तक। इस लेख में हम मुख्य टूल्स, उनकी विशेषताओं और वास्तविक प्रोजेक्ट्स के लिए प्रैक्टिकल उदाहरणों पर चर्चा करेंगे।
1. .NET में XML के लिए मुख्य लाइब्रेरीज़
.NET प्लेटफॉर्म डेवलपर्स को XML प्रोसेसिंग के लिए कई API प्रदान करता है:
- System.Xml (XmlDocument, XmlReader, XmlWriter) — क्लासिक DOM (Document Object Model) अप्रोच। पूरे XML डॉक्यूमेंट को मेमोरी में लोड करके नोड्स के ट्री के रूप में काम करता है।
- LINQ to XML (XDocument, XElement, XAttribute) — आधुनिक, हल्का और आसान API, जो LINQ के साथ इंटीग्रेटेड है। नए प्रोजेक्ट्स के लिए सबसे अच्छा विकल्प।
- XmlSerializer — C# ऑब्जेक्ट्स को XML में और XML से ऑटोमैटिक सीरियलाइज़ और डीसीरियलाइज़ करने के लिए।
- XPath (SelectSingleNode, SelectNodes) — XML डॉक्यूमेंट में नेविगेशन के लिए क्वेरी लैंग्वेज।
XmlDocumentऔरXDocumentदोनों में सपोर्टेड (एक्सटेंशन के ज़रिए)।
2. LINQ to XML: आधुनिक तरीका
System.Xml.Linq (LINQ to XML) लाइब्रेरी C# में XML के साथ काम करने के लिए सबसे पसंदीदा विकल्प है। यह साफ सिंटैक्स, आसान लोडिंग और LINQ क्वेरीज़ का सपोर्ट प्रदान करता है।
XML डॉक्यूमेंट बनाना
using System.Xml.Linq;
XDocument doc = new XDocument(
new XDeclaration("1.0", "utf-8", "yes"),
new XElement("books",
new XElement("book",
new XAttribute("id", "1"),
new XElement("title", "युद्ध और शांति"),
new XElement("author", "लियो टॉल्स्टॉय"),
new XElement("price", 599.99m)
),
new XElement("book",
new XAttribute("id", "2"),
new XElement("title", "अपराध और दंड"),
new XElement("author", "फ्योदोर दोस्तोयेव्स्की"),
new XElement("price", 450.00m)
)
)
);
doc.Save("books.xml");
XML लोड और पढ़ना
XDocument loadedDoc = XDocument.Load("books.xml");
// सभी किताबें प्राप्त करें
var allBooks = loadedDoc.Descendants("book");
foreach (var book in allBooks)
{
string id = book.Attribute("id")?.Value;
string title = book.Element("title")?.Value;
string author = book.Element("author")?.Value;
Console.WriteLine($"किताब #{id}: {title} — {author}");
}
LINQ के साथ क्वेरी
// 500 रुपये से अधिक की किताबें चुनें
var expensiveBooks = from book in loadedDoc.Descendants("book")
where (decimal)book.Element("price") > 500
select new
{
Title = (string)book.Element("title"),
Price = (decimal)book.Element("price")
};
foreach (var b in expensiveBooks)
{
Console.WriteLine($"{b.Title}: {b.Price} रुपये");
}
3. क्लासिक XmlDocument
अगर आप पुराने कोड के साथ काम कर रहे हैं या DOM पर पूर्ण नियंत्रण चाहिए, तो System.Xml नेमस्पेस के XmlDocument का उपयोग करें।
लोड और नेविगेशन
using System.Xml;
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load("books.xml");
XmlNode root = xmlDoc.DocumentElement;
XmlNodeList bookNodes = root.SelectNodes("book");
foreach (XmlNode node in bookNodes)
{
XmlNode titleNode = node.SelectSingleNode("title");
if (titleNode != null)
{
Console.WriteLine(titleNode.InnerText);
}
}
नया नोड जोड़ना
XmlNode newBook = xmlDoc.CreateElement("book");
XmlAttribute idAttr = xmlDoc.CreateAttribute("id");
idAttr.Value = "3";