ఈ ఆర్టికల్లో, మేము C ++ ప్రోగ్రామింగ్ లాంగ్వేజ్లో XML ను ఎలా అన్వయించాలో చర్చించబోతున్నాం. C ++ లో XML పార్సింగ్ విధానాన్ని అర్థం చేసుకోవడానికి మేము అనేక పని ఉదాహరణలను చూస్తాము.
XML అంటే ఏమిటి?
XML ఒక మార్కప్ లాంగ్వేజ్ మరియు ఇది ప్రధానంగా వ్యవస్థీకృత మార్గంలో డేటాను నిల్వ చేయడానికి మరియు బదిలీ చేయడానికి ఉపయోగించబడుతుంది. XML అంటే ఎక్స్టెన్సిబుల్ మార్కప్ లాంగ్వేజ్. ఇది HTML కి చాలా పోలి ఉంటుంది. XML డేటాను నిల్వ చేయడం మరియు బదిలీ చేయడంపై పూర్తిగా దృష్టి పెట్టింది, అయితే HTML బ్రౌజర్లో డేటాను ప్రదర్శించడానికి ఉపయోగించబడుతుంది.
నమూనా XML ఫైల్/XML సింటాక్స్
ఇక్కడ నమూనా XML ఫైల్ ఉంది:
సంస్కరణ: Telugu='1.0' ఎన్కోడింగ్='utf-8'?>
>
HTML వలె కాకుండా, ఇది ట్యాగ్-ఆధారిత మార్కప్ లాంగ్వేజ్, మరియు మేము XML ఫైల్లో మా స్వంత ట్యాగ్ను నిర్వచించవచ్చు. పై ఉదాహరణలో, మాకు అనేక యూజర్ నిర్వచించిన ట్యాగ్లు ఉన్నాయి. ప్రతి ట్యాగ్కు సంబంధిత ముగింపు ట్యాగ్ ఉంటుంది. అనేది ముగింపు ట్యాగ్. మేము డేటాను ఆర్గనైజ్ చేయాలనుకున్నన్ని యూజర్ నిర్వచించిన ట్యాగ్లను నిర్వచించవచ్చు.
C ++ లో పార్సింగ్ లైబ్రరీలు:
చాలా ఉన్నత-స్థాయి ప్రోగ్రామింగ్ భాషలలో XML డేటాను అన్వయించడానికి వివిధ లైబ్రరీలు ఉన్నాయి. C ++ మినహాయింపు కాదు. XML డేటాను అన్వయించడానికి అత్యంత ప్రాచుర్యం పొందిన C ++ లైబ్రరీలు ఇక్కడ ఉన్నాయి:
- RapidXML
- PugiXML
- TinyXML
పేరు సూచించినట్లుగా, RapidXML ప్రధానంగా వేగంపై దృష్టి పెట్టింది, మరియు ఇది DOM స్టైల్ పార్సింగ్ లైబ్రరీ. PugiXML యునికోడ్ మార్పిడికి మద్దతు ఇస్తుంది. మీరు UTF-16 పత్రాన్ని UTF-8 కి మార్చాలనుకుంటే మీరు PugiXML ని ఉపయోగించాలనుకోవచ్చు. TinyXML అనేది XML డేటాను అన్వయించడానికి ఒక కనీస వెర్షన్ మరియు మునుపటి రెండింటితో పోలిస్తే అంత వేగంగా లేదు. మీరు పనిని పూర్తి చేయాలనుకుంటే మరియు వేగం గురించి పట్టించుకోకపోతే, మీరు TinyXML ని ఎంచుకోవచ్చు.
ఉదాహరణలు
ఇప్పుడు, C ++ లో XML మరియు XML పార్సింగ్ లైబ్రరీల గురించి మాకు ప్రాథమిక అవగాహన ఉంది. ఇప్పుడు C ++ లో xml ఫైల్ని అన్వయించడానికి కొన్ని ఉదాహరణలను చూద్దాం:
- ఉదాహరణ -1: RapidXML ఉపయోగించి C ++ లో XML ని అన్వయించండి
- ఉదాహరణ -2: PugiXML ఉపయోగించి C ++ లో XML ని అన్వయించండి
- ఉదాహరణ -3: TinyXML ఉపయోగించి C ++ లో XML ని అన్వయించండి
ఈ ప్రతి ఉదాహరణలో, మేము ఒక నమూనా XML ఫైల్ని అన్వయించడానికి సంబంధిత లైబ్రరీలను ఉపయోగిస్తాము.
ఉదాహరణ -1: RapidXML ఉపయోగించి C ++ లో XML ని అన్వయించండి
ఈ ఉదాహరణ ప్రోగ్రామ్లో, C ++ లో RapidXML లైబ్రరీని ఉపయోగించి xml ను ఎలా అన్వయించాలో మేము ప్రదర్శిస్తాము. ఇక్కడ ఇన్పుట్ XML ఫైల్ (నమూనా. Xml):
సంస్కరణ: Telugu='1.0' ఎన్కోడింగ్='utf-8'?>>
C ++ ఉపయోగించి పై XML ఫైల్ని అన్వయించడం ఇక్కడ మా లక్ష్యం. RapidXML ఉపయోగించి XML డేటాను అన్వయించడానికి ఇక్కడ C ++ ప్రోగ్రామ్ ఉంది. మీరు RapidXML లైబ్రరీని డౌన్లోడ్ చేసుకోవచ్చు ఇక్కడ .
#చేర్చండి#చేర్చండి
#చేర్చండి
#వేగవంతమైన xml.hpp 'ని చేర్చండి
ఉపయోగించి నేమ్స్పేస్గంటలు;
ఉపయోగించి నేమ్స్పేస్quickxml;
xml_documentdoc
xml_node *root_node= శూన్య;
intప్రధాన(శూన్యం)
{
ఖరీదు << ' nనా విద్యార్థుల డేటాను అన్వయించడం (నమూనా. Xml) ..... ' <<endl;
// నమూనా. Xml ఫైల్ని చదవండి
ifstream ది ఫైల్('నమూనా. xml');
వెక్టర్<చార్>బఫర్((istreambuf_iterator<చార్>(ఆ ఫైల్)), istreambuf_iterator<చార్>());
బఫర్.వెనుకకు నెట్టడం(' 0');
// బఫర్ను పార్స్ చేయండి
docఅన్వయించు<0>(&బఫర్[0]);
// రూట్ నోడ్ను కనుగొనండి
root_node=docఫస్ట్_నోడ్('MyStudentsData');
// స్టూడెంట్ నోడ్స్పై ఇట్రేట్ చేయండి
కోసం (xml_node *విద్యార్థి_నోడ్=root_node->ఫస్ట్_నోడ్('విద్యార్థి');విద్యార్థి_నోడ్;విద్యార్థి_నోడ్=విద్యార్థి_నోడ్->తదుపరి_సోదరుడు())
{
ఖరీదు << ' nవిద్యార్థి రకం = ' <<విద్యార్థి_నోడ్->మొదటి_గుణం('స్టూడెంట్_టైప్')->విలువ();
ఖరీదు <<endl;
// విద్యార్థుల పేర్లపై ఇంటరాక్ట్ చేయండి
కోసం(xml_node *విద్యార్థి_పేరు_నోడ్=విద్యార్థి_నోడ్->ఫస్ట్_నోడ్('పేరు');విద్యార్థి_పేరు_నోడ్;విద్యార్థి_పేరు_నోడ్=విద్యార్థి_పేరు_నోడ్->తదుపరి_సోదరుడు())
{
ఖరీదు << 'విద్యార్థి పేరు =' <<విద్యార్థి_పేరు_నోడ్->విలువ();
ఖరీదు <<endl;
}
ఖరీదు <<endl;
}
తిరిగి 0;
}
ఉదాహరణ -2: PugiXML ఉపయోగించి C ++ లో XML ని అన్వయించండి
ఈ ఉదాహరణ ప్రోగ్రామ్లో, C ++ లో PugiXML లైబ్రరీని ఉపయోగించి xml ను ఎలా అన్వయించాలో మేము ప్రదర్శిస్తాము. ఇక్కడ ఇన్పుట్ XML ఫైల్ (నమూనా. Xml):
సంస్కరణ: Telugu='1.0' ఎన్కోడింగ్='UTF-8' స్వతంత్ర='లేదు' ?>>
ఈ ఉదాహరణ ప్రోగ్రామ్లో, C ++ లో pugixml లైబ్రరీని ఉపయోగించి xml ను ఎలా అన్వయించాలో మేము ప్రదర్శిస్తాము. మీరు PugiXML లైబ్రరీని డౌన్లోడ్ చేసుకోవచ్చు ఇక్కడ .
#చేర్చండి#'pugixml.hpp' ని చేర్చండి
ఉపయోగించి నేమ్స్పేస్గంటలు;
ఉపయోగించి నేమ్స్పేస్పుగి;
intప్రధాన()
{
ఖరీదు << ' nపార్సింగ్ ఉద్యోగుల డేటా (నమూనా. Xml) ..... n n';
xml_document doc;
// XML ఫైల్ను లోడ్ చేయండి
ఉంటే (!docలోడ్_ఫైల్('నమూనా. xml')) తిరిగి -1;
xml_node టూల్స్=docబిడ్డ('ఉద్యోగుల డేటా').బిడ్డ('ఉద్యోగులు');
కోసం (xml_node_iterator అది=టూల్స్.ప్రారంభించండి();అది!=టూల్స్.ముగింపు(); ++అది)
{
ఖరీదు << 'ఉద్యోగులు:';
కోసం (xml_attribute_iterator ait=అది->గుణాలు_ ప్రారంభం();చెందిన!=అది->గుణాలు_ ముగింపు(); ++చెందిన)
{
ఖరీదు << '' <<చెందిన->పేరు() << '=' <<చెందిన->విలువ();
}
ఖరీదు <<endl;
}
ఖరీదు <<endl;
తిరిగి 0;
}
ఉదాహరణ -3: TinyXML ఉపయోగించి C ++ లో XML ని అన్వయించండి
ఈ ఉదాహరణ ప్రోగ్రామ్లో, C ++ లో TinyXML లైబ్రరీని ఉపయోగించి xml ను ఎలా అన్వయించాలో మేము ప్రదర్శిస్తాము. ఇక్కడ ఇన్పుట్ XML ఫైల్ (నమూనా. Xml):
సంస్కరణ: Telugu='1.0' ఎన్కోడింగ్='utf-8'?>>
ఈ ఉదాహరణ ప్రోగ్రామ్లో, C ++ లో TinyXML లైబ్రరీని ఉపయోగించి xml ను ఎలా అన్వయించాలో మేము ప్రదర్శిస్తాము. మీరు నుండి TinyXML లైబ్రరీని డౌన్లోడ్ చేసుకోవచ్చు ఇక్కడ .
#చేర్చండి#చేర్చండి
#చేర్చండి
#'tinyxml2.cpp' ని చేర్చండి
ఉపయోగించి నేమ్స్పేస్గంటలు;
ఉపయోగించి నేమ్స్పేస్tinyxml2;
intప్రధాన(శూన్యం)
{
ఖరీదు << ' nనా విద్యార్థుల డేటాను అన్వయించడం (నమూనా. Xml) ..... ' <<endl;
// నమూనా. Xml ఫైల్ని చదవండి
XML డాక్యుమెంట్ డాక్;
docలోడ్ ఫైల్( 'నమూనా. xml' );
కానిస్టేట్ చార్*శీర్షిక=docఫస్ట్చైల్డ్ ఎలిమెంట్( 'MyStudentsData' )->ఫస్ట్చైల్డ్ ఎలిమెంట్( 'విద్యార్థి' )->గెట్ టెక్స్ట్();
printf( 'విద్యార్థి పేరు: %s n', శీర్షిక);
XML టెక్స్ట్*టెక్స్ట్ నోడ్=docలాస్ట్ చైల్డ్ ఎలిమెంట్( 'MyStudentsData' )->లాస్ట్ చైల్డ్ ఎలిమెంట్( 'విద్యార్థి' )->ఫస్ట్ చైల్డ్()->టోటెక్స్ట్();
శీర్షిక=టెక్స్ట్ నోడ్->విలువ();
printf( 'విద్యార్థి పేరు: %s n', శీర్షిక);
తిరిగి 0;
}
ముగింపు
ఈ వ్యాసంలో, మేము క్లుప్తంగా చర్చించాము XML మరియు C ++ లో XML ను ఎలా అన్వయించాలో మూడు విభిన్న ఉదాహరణలను పరిశీలించారు. TinyXML అనేది XML డేటాను అన్వయించడానికి కనీస లైబ్రరీ. చాలా మంది ప్రోగ్రామర్లు ప్రధానంగా XML డేటాను అన్వయించడానికి RapidXML లేదా PugiXML ని ఉపయోగిస్తారు.