C ++

Cum se analizează XML în C ++

Cum se analizează XML în C ++

În acest articol, vom discuta despre cum să analizăm XML în limbajul de programare C ++. Vom vedea câteva exemple de lucru pentru a înțelege mecanismul de analiză XML în C++.

Ce este XML?

XML este un limbaj de marcare și este utilizat în principal pentru stocarea și transferul de date într-un mod organizat. XML înseamnă eXtensible Markup Language. Este foarte asemănător cu HTML. XML-ul este complet axat pe stocarea și transferul datelor, în timp ce HTML este utilizat pentru afișarea datelor în browser.

Un exemplu de fișier XML / sintaxă XML

Iată un exemplu de fișier XML:




Tom


Drake

Spre deosebire de HTML, este un limbaj de marcare orientat spre etichete și ne putem defini propria etichetă într-un fișier XML. În exemplul de mai sus, avem mai multe etichete definite de utilizator, cum ar fi „”. Fiecare etichetă va avea eticheta de finalizare corespunzătoare. „"Este eticheta de finalizare pentru"”. Putem defini cât de multe etichete definite de utilizator dorim să organizăm datele.

Analizarea bibliotecilor în C ++:

Există diverse biblioteci pentru a analiza datele XML în majoritatea limbajelor de programare la nivel înalt. C ++ nu este o excepție. Iată cele mai populare biblioteci C ++ pentru a analiza datele XML:

  1. RapidXML
  2. PugiXML
  3. TinyXML

După cum sugerează și numele, RapidXML se concentrează în principal pe viteză și este o bibliotecă de analiză a stilului DOM. PugiXML acceptă conversia Unicode. Poate doriți să utilizați PugiXML dacă doriți să convertiți documentul UTF-16 în UTF-8. TinyXML este o versiune minimă pentru a analiza datele XML și nu atât de rapid în comparație cu cele două precedente. Dacă doriți să faceți treaba și nu vă interesează viteza, puteți alege TinyXML.

Exemple
Acum, avem o înțelegere de bază a bibliotecilor XML și XML de analiză în C++. Să vedem acum câteva exemple pentru a analiza fișierul XML în C ++:

În fiecare dintre aceste exemple, vom folosi bibliotecile respective pentru a analiza un eșantion de fișier XML.

Exemplu-1: Analizați XML în C ++ utilizând RapidXML

În acest exemplu de program, vom demonstra cum să analizăm XML folosind biblioteca RapidXML în C++. Iată fișierul XML de intrare (exemplu.xml):




Ioan


Sean


Sarah

Scopul nostru aici este să analizăm fișierul XML de mai sus folosind C++. Iată programul C ++ pentru a analiza datele XML folosind RapidXML. Puteți descărca biblioteca RapidXML de aici.

#include
#include
#include
#include "rapidxml.hpp "
folosind spațiul de nume std;
utilizarea spațiului de nume rapidxml;
xml_document <> doc
xml_node <> * root_node = NULL;
int main (nul)

cout << "\nParsing my students data (sample.xml)… " << endl;
// Citiți eșantionul.fișier XML
ifstream theFile ("eșantion.xml ");
vector tampon ((istreambuf_iterator(theFile)), istreambuf_iterator());
tampon.push_back ('\ 0');
// Analizați tamponul
doc.analiza<0>(& tampon [0]);
// Aflați nodul rădăcină
root_node = doc.first_node ("MyStudentsData");
// Iterează peste nodurile studentului
pentru (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;
// Interatați peste numele studenților
pentru (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->valoare();
cout << endl;

cout << endl;

retur 0;

Exemplu-2: Analizați XML în C ++ folosind PugiXML

În acest exemplu de program, vom demonstra cum să analizăm XML folosind biblioteca PugiXML în C++. Iată fișierul XML de intrare (exemplu.xml):











În acest exemplu de program, vom demonstra cum să analizăm XML folosind biblioteca pugixml în C++. Puteți descărca biblioteca PugiXML de aici.

#include
#include "pugixml.hpp "
folosind spațiul de nume std;
folosind spațiul de nume pugi;
int main ()

cout << "\nParsing employees data (sample.xml)… \n\n";
xml_document doc;
// încărcați fișierul XML
dacă (!doc.load_file ("mostră.xml ")) returnează -1;
xml_node tools = doc.copil („EmployeesData”).copil („Angajați”);
for (xml_node_iterator it = tools.începe(); aceasta != instrumente.Sfârșit(); ++ it)

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

cout << " " << ait->Nume() << "=" << ait->valoare();

cout << endl;

cout << endl;
retur 0;

Exemplu-3: Analizați XML în C ++ utilizând TinyXML

În acest exemplu de program, vom demonstra cum să analizăm XML folosind biblioteca TinyXML în C++. Iată fișierul XML de intrare (exemplu.xml):



Ioan
Sean
Sarah

În acest exemplu de program, vom demonstra cum să analizăm XML folosind biblioteca TinyXML în C++. Puteți descărca biblioteca TinyXML de aici.

#include
#include
#include
#include "tinyxml2.CPP "
folosind spațiul de nume std;
folosind spațiul de nume tinyxml2;
int main (nul)

cout << "\nParsing my students data (sample.xml)… " << endl;
// Citiți eșantionul.fișier XML
XMLDocument doc;
doc.LoadFile ("eșantion.xml ");
const char * title = doc.FirstChildElement ("MyStudentsData") -> FirstChildElement ("Student") -> GetText ();
printf ("Nume student:% s \ n", titlu);
XMLText * textNode = doc.LastChildElement ("MyStudentsData") -> LastChildElement ("Student") -> FirstChild () -> ToText ();
title = textNode-> Value ();
printf ("Nume student:% s \ n", titlu);
retur 0;

Concluzie

În acest articol, am discutat pe scurt XML și am analizat trei exemple diferite de cum să analizăm XML în C++. TinyXML este o bibliotecă minimalistă pentru analizarea datelor XML.  Majoritatea programatorilor utilizează în principal RapidXML sau PugiXML pentru a analiza datele XML.

Motoare de jocuri gratuite și open source pentru dezvoltarea jocurilor Linux
Acest articol va acoperi o listă de motoare de jocuri gratuite și open source care pot fi utilizate pentru dezvoltarea jocurilor 2D și 3D pe Linux. Ex...
Tutorial Shadow of the Tomb Raider pentru Linux
Shadow of the Tomb Raider este a douăsprezecea completare a seriei Tomb Raider - o franciză de jocuri de acțiune-aventură creată de Eidos Montreal. Jo...
Cum se mărește FPS în Linux?
FPS înseamnă Cadre pe secundă. Sarcina FPS este de a măsura rata de cadre în redările video sau în performanțele jocului. În cuvinte simple, numărul d...