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:
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 „
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:
- RapidXML
- PugiXML
- 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 ++:
- Primjer-1: Analizirajte XML u C ++-u pomoću RapidXML-a
- Primjer-2: Analizirajte XML u C ++-u pomoću PugiXML-a
- Primjer-3: Analizirajte XML u jeziku C ++ pomoću TinyXML-a
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):
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
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):
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.