Šajā rakstā mēs apspriedīsim, kā parsēt XML C ++ programmēšanas valodā. Mēs redzēsim vairākus darba piemērus, lai izprastu XML parsēšanas mehānismu C ++.
Kas ir XML?
XML ir iezīmēšanas valoda, un to galvenokārt izmanto datu uzglabāšanai un pārsūtīšanai organizētā veidā. XML nozīmē eXtensible Markup Language. Tas ir ļoti līdzīgs HTML. XML ir pilnībā vērsts uz datu glabāšanu un pārsūtīšanu, savukārt HTML tiek izmantots datu parādīšanai pārlūkprogrammā.
XML faila/XML sintakses paraugs
Šeit ir XML faila paraugs:
versija='1.0' kodēšana='utf-8'?>
>
Atšķirībā no HTML, tā ir uz tagu orientēta iezīmēšanas valoda, un mēs varam definēt savu tagu XML failā. Iepriekš minētajā piemērā mums ir vairāki lietotāja definēti tagi, piemēram,. Katram tagam būs atbilstošais beigu tags. ir beigu tags. Mēs varam definēt tik daudz lietotāja definētu tagu, cik vēlamies sakārtot datus.
Bibliotēku parsēšana C ++:
Lielākajā daļā augsta līmeņa programmēšanas valodu XML datu parsēšanai ir dažādas bibliotēkas. C ++ nav izņēmums. Šeit ir populārākās C ++ bibliotēkas XML datu parsēšanai:
- RapidXML
- PugiXML
- TinyXML
Kā norāda nosaukums, RapidXML galvenokārt koncentrējas uz ātrumu, un tā ir DOM stila parsēšanas bibliotēka. PugiXML atbalsta Unicode konvertēšanu. Iespējams, vēlēsities izmantot PugiXML, ja vēlaties pārvērst UTF-16 dokumentu par UTF-8. TinyXML ir minimālā versija XML datu parsēšanai un ne tik ātri, salīdzinot ar iepriekšējiem diviem. Ja vēlaties vienkārši paveikt darbu un nerūpēties par ātrumu, varat izvēlēties TinyXML.
Piemēri
Tagad mums ir pamatzināšanas par XML un XML parsēšanas bibliotēkām C ++. Tagad apskatīsim pāris piemērus, kā parsēt xml failu C ++:
- 1. piemērs: Parsējiet XML C ++, izmantojot RapidXML
- 2. piemērs: Parsējiet XML C ++, izmantojot PugiXML
- 3. piemērs: Parsējiet XML C ++, izmantojot TinyXML
Katrā no šiem piemēriem mēs izmantosim attiecīgās bibliotēkas, lai parsētu XML faila paraugu.
1. piemērs: Parsējiet XML C ++, izmantojot RapidXML
Šajā programmas paraugā mēs parādīsim, kā parsēt xml, izmantojot RapidXML bibliotēku C ++. Šeit ir ievades XML fails (sample.xml):
versija='1.0' kodēšana='utf-8'?>>
Mūsu mērķis šeit ir parsēt iepriekš minēto XML failu, izmantojot C ++. Šeit ir C ++ programma XML datu parsēšanai, izmantojot RapidXML. Jūs varat lejupielādēt RapidXML bibliotēku no Šeit .
#iekļaut#iekļaut
#iekļaut
#include 'rapidxml.hpp'
izmantojot vārda telpastundas;
izmantojot vārda telpafastxml;
xml_documentdoc
xml_node *root_node= NULL;
intgalvenais(spēkā neesošs)
{
izmaksas << ' nManu skolēnu datu parsēšana (sample.xml) ..... ' <<endl;
// Izlasiet failu sample.xml
ifstream theFile('sample.xml');
vektors<char>buferšķīdums((istreambuf_iterator<char>(fails)), istreambuf_iterator<char>());
buferšķīdums.atgrūst(' 0');
// Parsējiet buferi
doc.parsēt<0>(&buferšķīdums[0]);
// Uzziniet saknes mezglu
root_node=doc.pirmais_mezgls('MyStudentsData');
// Atkārtojiet studentu mezglus
priekš (xml_node *students_node=root_node->pirmais_mezgls('Students');students_node;students_node=students_node->next_sibling())
{
izmaksas << ' nStudenta tips = ' <<students_node->first_attribute('students_type')->vērtību();
izmaksas <<endl;
// Mijiedarbojieties ar studentu vārdiem
priekš(xml_node *student_name_node=students_node->pirmais_mezgls('Vārds');student_name_node;student_name_node=student_name_node->next_sibling())
{
izmaksas << 'Studenta vārds =' <<student_name_node->vērtību();
izmaksas <<endl;
}
izmaksas <<endl;
}
atgriezties 0;
}
2. piemērs: Parsējiet XML C ++, izmantojot PugiXML
Šajā programmas paraugā mēs parādīsim, kā parsēt xml, izmantojot PugiXML bibliotēku C ++. Šeit ir ievades XML fails (sample.xml):
versija='1.0' kodēšana='UTF-8' savrups='Nē' ?>>
Šajā programmas paraugā mēs parādīsim, kā parsēt xml, izmantojot pugixml bibliotēku C ++. PugiXML bibliotēku varat lejupielādēt no Šeit .
#iekļaut#include 'pugixml.hpp'
izmantojot vārda telpastundas;
izmantojot vārda telpapugi;
intgalvenais()
{
izmaksas << ' nDarbinieku datu parsēšana (sample.xml) ..... n n';
xml_document doc;
// ielādēt XML failu
ja (!doc.ielādes_fails('sample.xml')) atgriezties -1;
xml_node rīki=doc.bērns('Darbinieku dati').bērns('Darbinieki');
priekš (xml_node_iterator to=instrumentus.sākt();to!=instrumentus.beigas(); ++to)
{
izmaksas << 'Darbinieki:';
priekš (xml_attribute_iterator ait=to->attributes_begin();piederība!=to->attributes_end(); ++piederība)
{
izmaksas << '' <<piederība->vārds() << '=' <<piederība->vērtību();
}
izmaksas <<endl;
}
izmaksas <<endl;
atgriezties 0;
}
3. piemērs: Parsējiet XML C ++, izmantojot TinyXML
Šajā programmas paraugā mēs parādīsim, kā parsēt xml, izmantojot TinyXML bibliotēku C ++. Šeit ir ievades XML fails (sample.xml):
versija='1.0' kodēšana='utf-8'?>>
Šajā programmas paraugā mēs parādīsim, kā parsēt xml, izmantojot TinyXML bibliotēku C ++. Jūs varat lejupielādēt TinyXML bibliotēku no Šeit .
#iekļaut#iekļaut
#iekļaut
#include 'tinyxml2.cpp'
izmantojot vārda telpastundas;
izmantojot vārda telpatinyxml2;
intgalvenais(spēkā neesošs)
{
izmaksas << ' nManu skolēnu datu parsēšana (sample.xml) ..... ' <<endl;
// Izlasiet failu sample.xml
XMLDokumenta dok;
doc.LoadFile( 'sample.xml' );
konst char*titulu=doc.FirstChildElement( 'MyStudentsData' )->FirstChildElement( 'Students' )->GetText();
printf( 'Studenta vārds: %s n', virsraksts);
XMLText*textNode=doc.LastChildElement( 'MyStudentsData' )->LastChildElement( 'Students' )->FirstChild()->Rakstīt();
titulu=textNode->Vērtība();
printf( 'Studenta vārds: %s n', virsraksts);
atgriezties 0;
}
Secinājums
Šajā rakstā mēs īsi apspriedām XML un apskatīja trīs dažādus piemērus, kā parsēt XML C ++. TinyXML ir minimālisma bibliotēka XML datu parsēšanai. Lielākā daļa programmētāju XML datu parsēšanai galvenokārt izmanto RapidXML vai PugiXML.