Cum se analizează XML în C ++

How Parse Xml 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 markup ș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 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:



versiune=„1.0” codificare=„utf-8”?>

>

student_type='Cu jumătate de normă'>

>Tom>

>

student_type='Cu normă întreagă'>

>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 ++:



  • 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 (sample.xml):

versiune=„1.0” codificare=„utf-8”?>

>

student_type='Cu jumătate de normă'>

>Ioan>

>

student_type='Cu normă întreagă'>

>Sean>

>

student_type='Cu jumătate de normă'>

>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 la Aici .

#include
#include
#include
#include 'rapidxml.hpp'

folosind spațiu de numeore;
folosind spațiu de numerapidxml;


xml_documentdoc
xml_node *root_node= NUL;

intprincipal(nul)
{
cost << ' nAnalizând datele elevilor mei (sample.xml) ..... ' <<endl;

// Citiți fișierul sample.xml
ifstream theFile(„sample.xml”);
vector<char>tampon((istreambuf_iterator<char>(fișierul)), istreambuf_iterator<char>());
tampon.împinge înapoi(' 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())
{
cost << ' nTip student = ' <<student_node->first_attribute(„student_type”)->valoare();
cost <<endl;

// Interatați peste numele studenților
pentru(xml_node *student_name_node=student_node->first_node('Nume');student_name_node;student_name_node=student_name_node->next_sibling())
{
cost << „Nume student =” <<student_name_node->valoare();
cost <<endl;
}
cost <<endl;
}

întoarcere 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 (sample.xml):

versiune=„1.0” codificare=„UTF-8” de sine stătătoare='Nu' ?>

FormatVersion=„1”>

>

Nume='Ioan' Tip='Cu jumătate de normă'>

>

Nume=„Sean” Tip='Cu normă întreagă'>

>

Nume=„Sarah” Tip='Cu jumătate de normă'>

>

>

>

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

#include
#include 'pugixml.hpp'

folosind spațiu de numeore;
folosind spațiu de numepugi;

intprincipal()
{
cost << ' nAnalizarea datelor angajaților (sample.xml) ..... n n';


xml_document doc;

// încărcați fișierul XML
dacă (!doc.load_file(„sample.xml”)) întoarcere -1;

instrumente xml_node=doc.copil(„EmployeesData”).copil(„Angajați”);


pentru (xml_node_iterator it=instrumente.începe();aceasta!=instrumente.Sfârșit(); ++aceasta)
{
cost << „Angajați:”;

pentru (xml_attribute_iterator ait=aceasta->atribute_begin();apartenență!=aceasta->atribute_final(); ++apartenență)
{
cost << '' <<apartenență->Nume() << '=' <<apartenență->valoare();
}

cost <<endl;
}

cost <<endl;

întoarcere 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 (sample.xml):

versiune=„1.0” codificare=„utf-8”?>

>

>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 la Aici .

#include
#include
#include
#include 'tinyxml2.cpp'

folosind spațiu de numeore;
folosind spațiu de numetinyxml2;


intprincipal(nul)
{
cost << ' nAnalizând datele elevilor mei (sample.xml) ..... ' <<endl;

// Citiți fișierul sample.xml
XMLDocument doc;
doc.LoadFile( „sample.xml” );

const char*titlu=doc.FirstChildElement( „MyStudentsData” )->FirstChildElement( 'Student' )->GetText();
printf( 'Nume student:% s n', titlu);


XMLText*textNode=doc.LastChildElement( „MyStudentsData” )->LastChildElement( 'Student' )->Primul copil()->La text();
titlu=textNode->Valoare();
printf( 'Nume student:% s n', titlu);


întoarcere 0;
}

Concluzie

În acest articol, am discutat pe scurt XML și a analizat trei exemple diferite despre 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.