C ++

Kaip išanalizuoti XML C ++ formatu

Kaip išanalizuoti XML C ++ formatu

Šiame straipsnyje aptarsime, kaip analizuoti XML C ++ programavimo kalba. Pamatysime kelis veikiančius pavyzdžius, kad suprastume C XML analizavimo mechanizmą++.

Kas yra XML?

XML yra žymėjimo kalba ir daugiausia naudojama organizuotam duomenų saugojimui ir perdavimui. XML reiškia eXtensible Markup Language. Tai labai panašu į HTML. XML yra sutelktas į duomenų saugojimą ir perdavimą, o HTML naudojamas duomenims rodyti naršyklėje.

XML failo pavyzdys / XML sintaksė

Čia yra XML failo pavyzdys:




Tomas


Drake'as

Skirtingai nuo HTML, tai yra į žymą orientuota žymėjimo kalba, ir mes galime apibrėžti savo žymą XML faile. Ankstesniame pavyzdyje turime keletą vartotojo apibrėžtų žymų, tokių kaip „“. Kiekvienoje žymoje bus atitinkama pabaigos žyma. „“Yra pabaigos žymė„“. Mes galime apibrėžti tiek vartotojų apibrėžtų žymų, kiek norime sutvarkyti duomenis.

Analizuojamos C ++ bibliotekos:

Yra įvairių bibliotekų, skirtų XML duomenims analizuoti daugeliu aukšto lygio programavimo kalbų. C ++ nėra išimtis. Čia yra populiariausios C ++ bibliotekos, skirtos analizuoti XML duomenis:

  1. „RapidXML“
  2. „PugiXML“
  3. „TinyXML“

Kaip rodo pavadinimas, „RapidXML“ daugiausia dėmesio skiria greičiui ir tai yra DOM stiliaus analizavimo biblioteka. „PugiXML“ palaiko „Unicode“ konvertavimą. Galbūt norėsite naudoti „PugiXML“, jei norite konvertuoti UTF-16 doc į UTF-8. „TinyXML“ yra minimali versija, skirta XML duomenims analizuoti, ir nėra taip greitai, palyginti su dviem ankstesniais. Jei norite tiesiog atlikti darbą ir jums nerūpi greitis, galite pasirinkti „TinyXML“.

Pavyzdžiai
Dabar mes turime pagrindinį supratimą apie XML ir XML analizavimo bibliotekas C++. Pažiūrėkime keletą pavyzdžių, kaip išanalizuoti xml failą C ++:

Kiekviename iš šių pavyzdžių naudosime atitinkamas bibliotekas XML failo pavyzdžiui išanalizuoti.

1 pavyzdys: XML analizavimas C ++ formatu naudojant „RapidXML“

Šiame programos pavyzdyje mes parodysime, kaip analizuoti xml naudojant „RapidXML“ biblioteką C++. Čia yra įvesties XML failas (pavyzdys.xml):




Jonas


Šonas


Sarah

Mūsų tikslas yra išanalizuoti aukščiau esantį XML failą naudojant C++. Čia yra C ++ programa, skirta XML duomenims analizuoti naudojant „RapidXML“. „RapidXML“ biblioteką galite atsisiųsti iš čia.

# įtraukti
# įtraukti
# įtraukti
#include "rapidxml.hpp "
naudojant vardų sritį std;
naudojant vardų sritį rapidxml;
xml_document <> doc
xml_node <> * root_node = NULL;
int main (negaliojantis)

cout << "\nParsing my students data (sample.xml)… " << endl;
// Perskaitykite pavyzdį.xml failas
ifstream theFile ("pavyzdys.xml ");
vektorius buferis ((istreambuf_iterator(theFile)), istreambuf_iterator());
buferis.„push_back“ ('\ 0');
// Išanalizuoti buferį
doc.analizuoti<0>(& buferis [0]);
// Sužinokite šaknies mazgą
šakninis mazgas = doc.first_node ("MyStudentsData");
// Kartoti per mokinio mazgus
skirta (xml_node <> * studento_node = šaknies_node-> first_node ("Studentas"); studento_node; studento_node = studento_node-> next_sibling ())

cout << "\nStudent Type =   " << student_node->pirmasis_atributas ("studento_tipas") -> reikšmė ();
cout << endl;
// Kalbėkitės per studentų vardus
for (xml_node <> * studento_vardas_node = studento_mezglis-> pirmasis_mezglas ("Vardas"); studento_vardas_mezglys; studento_vardas_nodelis = studento_vardas_nodelis-> kitas_siblingas ())

cout << "Student Name =   " << student_name_node->vertė ();
cout << endl;

cout << endl;

grąžinti 0;

2 pavyzdys: XML analizuokite C ++ sistemoje naudodami „PugiXML“

Šiame programos pavyzdyje mes parodysime, kaip analizuoti xml naudojant C „PugiXML“ biblioteką++. Čia yra įvesties XML failas (pavyzdys.xml):











Šioje programos pavyzdyje mes parodysime, kaip išanalizuoti xml naudojant pugixml biblioteką C++. „PugiXML“ biblioteką galite atsisiųsti iš čia.

# įtraukti
#include "pugixml.hpp "
naudojant vardų sritį std;
naudojant vardų sritį pugi;
int main ()

cout << "\nParsing employees data (sample.xml)… \n\n";
xml_document doc;
// įkelkite XML failą
jei (!doc.load_file ("pavyzdys.xml ")) grįžti -1;
xml_node tools = doc.vaikas („EmployeesData“).vaikas („Darbuotojai“);
for (xml_node_iterator it = įrankiai.pradėti (); tai != įrankiai.galas(); ++ it)

cout << "Employees:";
for (xml_attribute_iterator ait = it-> attributes_begin (); ait != it-> attributes_end (); ++ ait)

cout << " " << ait->vardas() << "=" << ait->vertė ();

cout << endl;

cout << endl;
grąžinti 0;

3 pavyzdys: XML analizavimas C ++ formatu naudojant „TinyXML“

Šioje programos pavyzdyje mes parodysime, kaip analizuoti xml naudojant C TinyXML biblioteką++. Čia yra įvesties XML failas (pavyzdys.xml):



Jonas
Šonas
Sarah

Šioje programos pavyzdyje mes parodysime, kaip analizuoti xml naudojant C TinyXML biblioteką++. „TinyXML“ biblioteką galite atsisiųsti iš čia.

# įtraukti
# įtraukti
# įtraukti
#include "tinyxml2.CPP "
naudojant vardų sritį std;
naudojant vardų sritį tinyxml2;
int main (negaliojantis)

cout << "\nParsing my students data (sample.xml)… " << endl;
// Perskaitykite pavyzdį.xml failas
XMLDocument doc;
doc.LoadFile ("pavyzdys.xml ");
const char * title = doc.„FirstChildElement“ („MyStudentsData“) -> FirstChildElement („Student“) -> GetText ();
printf ("Mokinio vardas:% s \ n", pavadinimas);
XMLText * textNode = doc.LastChildElement ("MyStudentsData") -> LastChildElement ("Student") -> FirstChild () -> ToText ();
title = textNode-> Reikšmė ();
printf ("Mokinio vardas:% s \ n", pavadinimas);
grąžinti 0;

Išvada

Šiame straipsnyje mes trumpai aptarėme XML ir ištyrėme tris skirtingus XML analizavimo pavyzdžius C++. „TinyXML“ yra minimalistinė biblioteka, skirta XML duomenims analizuoti.  Dauguma programuotojų XML duomenims analizuoti daugiausia naudoja „RapidXML“ arba „PugiXML“.

Populiariausi „Oculus App Lab“ žaidimai
Jei esate „Oculus“ laisvų rankų įrangos savininkas, turite žinoti, kaip krauti iš šono. Šoninis įkėlimas yra ne parduotuvėje esančio turinio įdiegimas...
10 geriausių žaidimų, kuriuos reikia žaisti naudojant „Ubuntu“
„Windows“ platforma buvo viena iš dominuojančių žaidimų platformų dėl didžiulio procento žaidimų, kurie šiandien kuriami natūraliai palaikant „Windows...
5 geriausi „Arcade“ žaidimai, skirti „Linux“
Šiais laikais kompiuteriai yra rimta mašina, naudojama žaidimams. Jei negalėsite gauti naujo aukšto rezultato, žinosite, ką noriu pasakyti. Šiame įraš...