C++ में XML के साथ कार्य: XML दस्तावेज़ों को पार्स करने और बनाने के लिए लाइब्रेरीज़ का अवलोकन
XML (Extensible Markup Language) संरचित डेटा को संग्रहीत करने और स्थानांतरित करने के लिए एक लोकप्रिय प्रारूप बना हुआ है, विशेष रूप से कॉन्फ़िगरेशन फ़ाइलों, वेब सेवाओं (SOAP, XML-RPC) और सिस्टम के बीच डेटा आदान-प्रदान में। C++ में XML के लिए कोई अंतर्निहित समर्थन नहीं है (पुराने MSXML को छोड़कर), इसलिए डेवलपर्स तृतीय-पक्ष लाइब्रेरीज़ का सहारा लेते हैं। इस लेख में, हम C++ में XML के साथ काम करने के लिए तीन सबसे लोकप्रिय और हल्की लाइब्रेरीज़ पर विचार करेंगे: TinyXML-2, PugiXML और RapidXML। आप सीखेंगे कि उनमें से प्रत्येक को कैसे स्थापित करें, XML दस्तावेज़ों को कैसे पार्स करें और बनाएं, और हम उनके प्रदर्शन और उपयोग में आसानी की तुलना भी करेंगे।
1. TinyXML-2
TinyXML-2 एक सरल, न्यूनतम लाइब्रेरी है जिसमें केवल दो फ़ाइलें (tinyxml2.h और tinyxml2.cpp) शामिल हैं। यह छोटी परियोजनाओं के लिए आदर्श है जहाँ उच्च प्रदर्शन की आवश्यकता नहीं है, लेकिन एकीकरण में सरलता महत्वपूर्ण है। लाइब्रेरी Zlib के तहत लाइसेंस प्राप्त है, जो इसे वाणिज्यिक परियोजनाओं में स्वतंत्र रूप से उपयोग करने की अनुमति देती है।
स्थापना
आधिकारिक रिपॉजिटरी से tinyxml2.h और tinyxml2.cpp फ़ाइलों को अपने प्रोजेक्ट में कॉपी करें और उन्हें शामिल करें। किसी अतिरिक्त निर्भरता की आवश्यकता नहीं है।
उदाहरण: XML पढ़ना
#include "tinyxml2.h"#include <iostream>
int main() { tinyxml2::XMLDocument doc; doc.LoadFile("config.xml");
tinyxml2::XMLElement* root = doc.RootElement(); if (root) { const char* value = root->FirstChildElement("setting")->GetText(); std::cout << "Setting: " << value << std::endl; } return 0;}उदाहरण: XML बनाना
#include "tinyxml2.h"
int main() { tinyxml2::XMLDocument doc; tinyxml2::XMLDeclaration* decl = doc.NewDeclaration(); doc.InsertFirstChild(decl);
tinyxml2::XMLElement* root = doc.NewElement("root"); root->SetAttribute("version", "1.0"); doc.InsertEndChild(root);
tinyxml2::XMLElement* child = doc.NewElement("item"); child->SetText("Hello, XML!"); root->InsertEndChild(child);
doc.SaveFile("output.xml"); return 0;}2. PugiXML
PugiXML TinyXML-2 की तुलना में एक तेज़ और अधिक कार्यात्मक लाइब्रेरी है। यह XPath, UTF-8/16 एन्कोडिंग के साथ काम करने का समर्थन करती है और इसमें एक सुविधाजनक API है। PugiXML का उपयोग अक्सर उन परियोजनाओं में किया जाता है जहाँ गति और सुविधा के बीच संतुलन की आवश्यकता होती है। यह MIT लाइसेंस के तहत वितरित की जाती है।
स्थापना
GitHub से स्रोत कोड डाउनलोड करें और प्रोजेक्ट में pugixml.cpp और pugixml.hpp जोड़ें। XPath का उपयोग करने के लिए प्रीप्रोसेसर परिभाषाओं में PUGIXML_HAS_XPATH जोड़ें।
उदाहरण: XPath के साथ XML पढ़ना
#include "pugixml.hpp"#include <iostream>
int main() { pugi::xml_document doc; doc.load_file("data.xml");
pugi::xpath_node result = doc.select_node("//item[@id='1']"); if (result) { std::cout << "Found: " << result.node().child_value() << std::endl; } return 0;}उदाहरण: XML बनाना
#include "pugixml.hpp"
int main() { pugi::xml_document doc; pugi::xml_node root = doc.append_child("configuration"); root.append_attribute("version") = "2.0";
pugi::xml_node param = root.append_child("param"); param.append_attribute("name") = "timeout"; param.text().set("30");
doc.save_file("config.xml"); return 0;}3. RapidXML
RapidXML C++ में XML पार्स करने के लिए सबसे तेज़ लाइब्रेरी है। यह इन-प्लेस (मूल स्ट्रिंग को संशोधित करता है) काम करती है