C ++

Kako raščlaniti XML u C ++

Kako raščlaniti XML u C ++

U ovom ćemo članku razgovarati o tome kako raščlaniti XML u programskom jeziku C ++. Vidjet ćemo nekoliko radnih primjera za razumijevanje XML mehanizma raščlanjivanja u C-u++.

Što je XML?

XML je označni jezik i uglavnom se koristi za pohranu i organizirani prijenos podataka. XML je kratica za proširivi označni jezik. Vrlo je sličan HTML-u. XML je u potpunosti usredotočen na pohranu i prijenos podataka, dok se HTML koristi za prikaz podataka u pregledniku.

Uzorak XML datoteke / XML sintaksa

Evo primjera XML datoteke:




Tom


Drake

Za razliku od HTML-a, to je označni jezik orijentiran na oznake, a vlastitu oznaku možemo definirati u XML datoteci. U gornjem primjeru imamo nekoliko korisnički definiranih oznaka kao što je „". Svaka će oznaka imati odgovarajuću završnu oznaku. “"Je završna oznaka za"". Možemo definirati onoliko korisničkih oznaka koliko želimo organizirati podatke.

Raščlanjivanje knjižnica u C ++:

Postoje razne knjižnice za raščlanjivanje XML podataka u većini programskih jezika visoke razine. C ++ nije iznimka. Evo najpopularnijih C ++ knjižnica za raščlanjivanje XML podataka:

  1. RapidXML
  2. PugiXML
  3. TinyXML

Kao što i samo ime govori, RapidXML je uglavnom usredotočen na brzinu i to je DOM-ova biblioteka za raščlanjivanje stilova. PugiXML podržava pretvorbu Unicode. Možda ćete htjeti koristiti PugiXML ako želite pretvoriti UTF-16 dokument u UTF-8. TinyXML je inačica s minimalnim minimumom za raščlanjivanje XML podataka i nije tako brza u usporedbi s prethodne dvije. Ako želite samo obaviti posao i ne brinete se za brzinu, možete odabrati TinyXML.

Primjeri
Sada imamo osnovno razumijevanje XML i XML biblioteka za raščlanjivanje u C-u++. Pogledajmo sada nekoliko primjera za raščlanjivanje xml datoteke na C ++:

U svakom od ovih primjera koristit ćemo odgovarajuće knjižnice za raščlanjivanje uzorka XML datoteke.

Primjer-1: Analizirajte XML u C ++-u pomoću RapidXML-a

U ovom primjeru programa pokazat ćemo kako raščlaniti xml pomoću RapidXML knjižnice u C-u++. Ovdje je ulazna XML datoteka (uzorak.xml):




Ivan


Sean


Sarah

Naš je cilj ovdje raščlaniti gornju XML datoteku pomoću C++. Ovdje je program C ++ za raščlanjivanje XML podataka pomoću RapidXML. RapidXML biblioteku možete preuzeti ovdje.

#include
#include
#include
#include "rapidxml.hpp "
pomoću prostora imena std;
pomoću prostora imena rapidxml;
xml_document <> dok
xml_node <> * root_node = NULL;
int main (void)

cout << "\nParsing my students data (sample.xml)… " << endl;
// Pročitajte uzorak.xml datoteku
ifstream theFile ("uzorak.xml ");
vektor međuspremnik ((istreambuf_iterator(datoteka)), istreambuf_iterator());
pufer.push_back ('\ 0');
// Analizirajte međuspremnik
doc.raščlaniti<0>(& međuspremnik [0]);
// Otkrivanje korijenskog čvora
root_node = dok.first_node ("MyStudentsData");
// Iteracija nad studentskim čvorovima
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 imenima učenika
za (xml_node <> * student_name_node = student_node-> first_node ("Name"); student_name_node; student_name_node = student_name_node-> next_sibling ())

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

cout << endl;

return 0;

Primjer-2: Analizirajte XML u jeziku C ++ pomoću PugiXML-a

U ovom primjeru programa pokazat ćemo kako raščlaniti xml pomoću PugiXML knjižnice u C-u++. Ovdje je ulazna XML datoteka (uzorak.xml):











U ovom primjeru programa pokazat ćemo kako raščlaniti xml pomoću pugixml knjižnice u C-u++. PugiXML knjižnicu možete preuzeti ovdje.

#include
#include "pugixml.hpp "
pomoću prostora imena std;
pomoću prostora imena pugi;
int main ()

cout << "\nParsing employees data (sample.xml)… \n\n";
xml_document doc;
// učitavanje XML datoteke
ako (!doc.load_file ("uzorak.xml ")) return -1;
xml_node tools = dok.dijete ("Podaci o zaposlenicima").dijete ("Zaposlenici");
za (xml_node_iterator it = alati.početi(); to != alata.kraj(); ++ to)

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

cout << " " << ait->Ime() << "=" << ait->vrijednost();

cout << endl;

cout << endl;
return 0;

Primjer-3: Analizirajte XML u jeziku C ++ pomoću TinyXML-a

U ovom primjeru programa pokazat ćemo kako raščlaniti xml pomoću TinyXML knjižnice u C-u++. Ovdje je ulazna XML datoteka (uzorak.xml):



Ivan
Sean
Sarah

U ovom primjeru programa pokazat ćemo kako raščlaniti xml pomoću TinyXML knjižnice u C-u++. TinyXML knjižnicu možete preuzeti ovdje.

#include
#include
#include
#include "tinyxml2.cpp "
pomoću prostora imena std;
pomoću prostora imena tinyxml2;
int main (void)

cout << "\nParsing my students data (sample.xml)… " << endl;
// Pročitajte uzorak.xml datoteku
XMLDocument doc;
doc.LoadFile ("uzorak.xml ");
const char * naslov = dok.FirstChildElement ("MyStudentsData") -> FirstChildElement ("Student") -> GetText ();
printf ("Ime učenika:% s \ n", naslov);
XMLText * textNode = dok.LastChildElement ("MyStudentsData") -> LastChildElement ("Student") -> FirstChild () -> ToText ();
title = textNode-> Value ();
printf ("Ime učenika:% s \ n", naslov);
return 0;

Zaključak

U ovom smo članku ukratko razgovarali o XML-u i pogledali tri različita primjera kako raščlaniti XML u C-u++. TinyXML je minimalistička knjižnica za raščlanjivanje XML podataka.  Većina programera uglavnom rabi RapidXML ili PugiXML za raščlanjivanje XML podataka.

Najbolje igre za ručno praćenje
Oculus Quest nedavno je predstavio sjajnu ideju ručnog praćenja bez kontrolera. Sa sve većim brojem igara i aktivnosti koje izvršavaju podršku bilo fo...
Kako prikazati OSD prekrivač u aplikacijama i igrama na cijelom zaslonu za Linux
Igranje igara preko cijelog zaslona ili upotreba aplikacija u režimu preko cijelog zaslona bez ometanja može vas odsjeći od relevantnih informacija o ...
Top 5 karata za hvatanje igara
Svi smo vidjeli i voljeli streaming reprodukcije na YouTubeu. PewDiePie, Jakesepticye i Markiplier samo su neki od najboljih igrača koji su zaradili m...