C ++

Kako razčleniti XML v jeziku C ++

Kako razčleniti XML v jeziku C ++

V tem članku bomo razpravljali o tem, kako razčleniti XML v programskem jeziku C ++. Videli bomo več delovnih primerov za razumevanje mehanizma razčlenjevanja XML v jeziku C++.

Kaj je XML?

XML je označevalni jezik in se v glavnem uporablja za shranjevanje in organiziran prenos podatkov. XML pomeni eXtensible Markup Language. Zelo je podoben HTML-ju. XML je popolnoma osredotočen na shranjevanje in prenos podatkov, medtem ko se HTML uporablja za prikaz podatkov v brskalniku.

Vzorčna datoteka XML / sintaksa XML

Tu je vzorčna datoteka XML:




Tom


Drake

Za razliko od HTML je označevalni jezik, ki je usmerjen v oznake, in lahko določimo svojo oznako v datoteki XML. V zgornjem primeru imamo več uporabniško določenih oznak, kot je »". Vsaka oznaka bo imela ustrezno končno oznako. “"Je končna oznaka za"". Določimo lahko toliko uporabniško določenih oznak, kolikor želimo organizirati podatke.

Razčlenitev knjižnic v jeziku C ++:

Obstajajo različne knjižnice za razčlenitev podatkov XML v večini programskih jezikov na visoki ravni. C ++ ni izjema. Tu so najbolj priljubljene knjižnice C ++ za razčlenitev podatkov XML:

  1. RapidXML
  2. PugiXML
  3. TinyXML

Kot že ime pove, je RapidXML osredotočen predvsem na hitrost in je knjižnica za razčlenjevanje v slogu DOM. PugiXML podpira pretvorbo Unicode. Morda boste želeli uporabiti PugiXML, če želite pretvoriti dokument UTF-16 v UTF-8. TinyXML je minimalna različica za razčlenitev podatkov XML in ni tako hitra v primerjavi s prejšnjima dvema. Če želite samo opraviti delo in vas ne skrbi hitrost, lahko izberete TinyXML.

Primeri
Zdaj imamo osnovno razumevanje knjižnic za razčlenjevanje XML in XML v jeziku C++. Oglejmo si zdaj nekaj primerov za razčlenitev datoteke xml v jeziku C ++:

V vsakem od teh primerov bomo za razčlenitev vzorčne datoteke XML uporabili ustrezne knjižnice.

Primer-1: Razčlenite XML v jeziku C ++ z uporabo RapidXML

V tem primeru bomo pokazali, kako razčleniti xml z uporabo knjižnice RapidXML v jeziku C++. Tu je vhodna datoteka XML (vzorec.xml):




Janez


Sean


Sarah

Naš cilj tukaj je razčleniti zgornjo datoteko XML s pomočjo C++. Tukaj je program C ++ za razčlenitev podatkov XML z uporabo RapidXML. Knjižnico RapidXML lahko prenesete od tukaj.

#include
#include
#include
#include "rapidxml.hpp "
uporaba imenskega prostora std;
uporaba imenskega prostora rapidxml;
xml_document <> dok
xml_node <> * root_node = NULL;
int main (void)

cout << "\nParsing my students data (sample.xml)… " << endl;
// Preberi vzorec.xml datoteko
ifstream theFile ("vzorec.xml ");
vektor medpomnilnik ((istreambuf_iterator(datoteka)), istreambuf_iterator());
medpomnilnik.push_back ('\ 0');
// Razčlenitev medpomnilnika
doc.razčleni<0>(& medpomnilnik [0]);
// Poiščite korensko vozlišče
root_node = dok.first_node ("MyStudentsData");
// Iteracija nad študentskimi vozlišči
za (xml_node <> * student_node = root_node-> first_node ("Student"); student_node; student_node = student_node-> next_sibling ())

cout << "\nStudent Type =   " << student_node->first_attribute ("student_type") -> value ();
cout << endl;
// Interes nad imeni študentov
za (xml_node <> * ime_studenta_node = student_node-> first_node ("Ime"); ime_ucena_v vozlišcu;

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

cout << endl;

vrnitev 0;

Primer-2: Razčlenite XML v jeziku C ++ s pomočjo PugiXML

V tem primeru bomo pokazali, kako razčleniti xml z uporabo knjižnice PugiXML v C++. Tu je vhodna datoteka XML (vzorec.xml):











V tem primeru bomo pokazali, kako razčleniti xml z uporabo knjižnice pugixml v C++. Knjižnico PugiXML lahko prenesete od tukaj.

#include
#include "pugixml.hpp "
uporaba imenskega prostora std;
uporaba imenskega prostora pugi;
int main ()

cout << "\nParsing employees data (sample.xml)… \n\n";
xml_document doc;
// naložimo datoteko XML
če (!doc.load_file ("vzorec.xml ")) return -1;
xml_node tools = dok.otrok ("EmployeesData").otrok ("Zaposleni");
for (xml_node_iterator it = tools.začeti(); to != orodja.konec (); ++ it)

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

cout << " " << ait->ime () << "=" << ait->vrednost ();

cout << endl;

cout << endl;
vrnitev 0;

Primer-3: Razčlenite XML v jeziku C ++ s pomočjo TinyXML

V tem primeru bomo pokazali, kako razčleniti xml z uporabo knjižnice TinyXML v C++. Tu je vhodna datoteka XML (vzorec.xml):



Janez
Sean
Sarah

V tem primeru programa bomo pokazali, kako razčleniti xml z uporabo knjižnice TinyXML v C++. Knjižnico TinyXML lahko prenesete od tukaj.

#include
#include
#include
#include "tinyxml2.cpp "
uporaba imenskega prostora std;
z uporabo imenskega prostora tinyxml2;
int main (void)

cout << "\nParsing my students data (sample.xml)… " << endl;
// Preberi vzorec.xml datoteko
XMLDocument doc;
doc.LoadFile ("vzorec.xml ");
const char * naslov = dok.FirstChildElement ("MyStudentsData") -> FirstChildElement ("Student") -> GetText ();
printf ("Ime študenta:% s \ n", naslov);
XMLText * textNode = dok.LastChildElement ("MyStudentsData") -> LastChildElement ("Student") -> FirstChild () -> ToText ();
title = textNode-> Value ();
printf ("Ime študenta:% s \ n", naslov);
vrnitev 0;

Zaključek

V tem članku smo na kratko razpravljali o XML in preučili tri različne primere, kako razčleniti XML v jeziku C++. TinyXML je minimalistična knjižnica za razčlenjevanje podatkov XML.  Večina programerjev za razčlenitev podatkov XML večinoma uporablja RapidXML ali PugiXML.

Najboljši emulatorji igralne konzole za Linux
V tem članku bo navedena priljubljena programska oprema za emulacijo igralne konzole, ki je na voljo za Linux. Emulacija je sloj združljivosti program...
Najboljši Linux Distros za igre na srečo v letu 2021
Operacijski sistem Linux je daleč od prvotnega, preprostega, strežniškega videza. Ta OS se je v zadnjih letih izjemno izboljšal in se je zdaj razvil v...
Kako zajeti in pretakati svojo igralno sejo v Linuxu
V preteklosti je bilo igranje iger le hobi, sčasoma pa je igralniška industrija zabeležila veliko rast glede tehnologije in števila igralcev. Občinstv...