Î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:
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 „
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:
- RapidXML
- PugiXML
- 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 ++:
- Exemplu-1: Analizați XML în C ++ utilizând RapidXML
- Exemplu-2: Analizați XML în C ++ folosind PugiXML
- Exemplu-3: Analizați XML în C ++ utilizând TinyXML
Î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):
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.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):
Î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.