Jak przeanalizować XML w C ++

Jak przeanalizować XML w C ++

W tym artykule omówimy, jak przeanalizować XML w języku programowania C ++. Zobaczymy kilka roboczych przykładów, aby zrozumieć mechanizm parsowania XML w C++.

Co to jest XML?

XML jest językiem znaczników i służy głównie do przechowywania i przesyłania danych w zorganizowany sposób. XML oznacza rozszerzalny język znaczników. Jest bardzo podobny do HTML. XML jest całkowicie skupiony na przechowywaniu i przesyłaniu danych, podczas gdy HTML służy do wyświetlania danych w przeglądarce.

Przykładowy plik XML/XML Składnia

Oto przykładowy plik XML:




Tomek


Kaczor

W przeciwieństwie do HTML, jest to język znaczników zorientowany na znacznik i możemy zdefiniować własny tag w pliku XML. W powyższym przykładzie mamy kilka tagów zdefiniowanych przez użytkownika, takich jak „”. Każdy znacznik będzie miał odpowiedni znacznik końcowy. „” Jest końcowym tagiem „”. Możemy zdefiniować tak wiele tagów zdefiniowanych przez użytkownika, ile chcemy uporządkować dane.

Parsowanie bibliotek w C ++:

Istnieją różne biblioteki do analizowania danych XML w większości języków programowania wysokiego poziomu. C ++ nie jest wyjątkiem. Oto najpopularniejsze biblioteki C ++ do analizowania danych XML:

  1. Rapidxml
  2. Pugixml
  3. Tinyxml

Jak sama nazwa wskazuje, RapidXML koncentruje się głównie na prędkości i jest to biblioteka parsowania w stylu DOM. Pugixml obsługuje konwersję Unicode. Możesz użyć Pugixml, jeśli chcesz przekonwertować dokument UTF-16 na UTF-8. Tinyxml to wersja gołego minimum do analizowania danych XML, a nie tak szybko w porównaniu z dwoma poprzednimi. Jeśli chcesz po prostu wykonać zadanie i nie przejmuj się prędkością, możesz wybrać Tinyxml.

Przykłady
Teraz mamy podstawowe zrozumienie bibliotek parsowania XML i XML w C++. Spójrzmy teraz na kilka przykładów, aby przeanalizować plik XML w C ++:

  • Przykład-1: Parse XML w C ++ za pomocą Rapidxml
  • Przykład-2: Parse XML w C ++ za pomocą Pugixml
  • Przykład-3: Parse XML w C ++ za pomocą Tinyxml

W każdym z tych przykładów użyjemy odpowiednich bibliotek do analizowania przykładowego pliku XML.

Przykład-1: Parse XML w C ++ za pomocą Rapidxml

W tym przykładowym programie zademonstrujemy, jak parsować XML za pomocą biblioteki RapidXML w C++. Oto wejście plik XML (próbka.xml):




Jan


Sean


Sarah

Naszym celem jest przeanalizowanie powyższego pliku XML za pomocą C++. Oto program C ++ do analizowania danych XML za pomocą RapidxML. Możesz pobrać bibliotekę Rapidxml stąd.

#włączać
#włączać
#włączać
#Include „Rapidxml.HPP "
za pomocą przestrzeni nazw Std;
za pomocą przestrzeni nazw Rapidxml;
xml_document Doc
xml_node * root_node = null;
int Main (void)

Cout << "\nParsing my students data (sample.xml)… " << endl;
// Przeczytaj próbkę.plik XML
ifstream plik („próbka.xml ");
wektor Bufor ((IstreamBuf_iterator(plik)), Istreambuf_iterator());
bufor.push_back ('\ 0');
// Parse bufor
Doc.analizować<0>(& Buffer [0]);
// Znajdź węzeł główny
root_node = Doc.First_node („MESTUDENTSDATA”);
// iteruj nad węzłami uczniów
for (xml_node * student_node = root_node-> first_node („student”);
student_node; student_node = student_node-> Next_sild ())

Cout << "\nStudent Type = " <<
Student_node-> First_attribute („student_type”)-> wartość ();
Cout << endl;
// przełącz się nad nazwiskami uczniów
for (xml_node * Student_name_node = student_node-> ferture_node („name”);
Student_name_node; Student_name_node = Student_name_node-> Next_sild ())

Cout << "Student Name = " << student_name_node->wartość();
Cout << endl;

Cout << endl;

powrót 0;

Przykład-2: Parse XML w C ++ za pomocą Pugixml

W tym przykładowym programie zademonstrujemy, jak przeanalizować XML za pomocą biblioteki Pugixml w C++. Oto wejście plik XML (próbka.xml):











W tym przykładowym programie zademonstrujemy, jak przeanalizować XML za pomocą biblioteki Pugixml w C++. Możesz pobrać bibliotekę Pugixml stąd.

#włączać
#include "Pugixml.HPP "
za pomocą przestrzeni nazw Std;
za pomocą przestrzeni nazw Pugi;
int main ()

Cout << "\nParsing employees data (sample.xml)… \n\n";
xml_document doc;
// Załaduj plik XML
Jeśli (!Doc.load_file („próbka.xml ")) return -1;
xml_node Tools = Doc.Dziecko („Pracownicy”).dziecko („pracownicy”);
dla (xml_node_iterator it = narzędzia.zaczynać(); To != Narzędzia.koniec(); ++ it)

Cout << "Employees:";
for (xml_attribute_iterator ait = it-> atrybut_begin ();
kępa != it-> atrybut_end (); ++ ait)

Cout << " " << ait->nazwa() <<
"=" << ait->wartość();

Cout << endl;

Cout << endl;
powrót 0;

Przykład-3: Parse XML w C ++ za pomocą Tinyxml

W tym przykładowym programie zademonstrujemy, jak parsować XML za pomocą biblioteki TinyXML w C++. Oto wejście plik XML (próbka.xml):



Jan
Sean
Sarah

W tym przykładowym programie zademonstrujemy, jak parsować XML za pomocą biblioteki TinyXML w C++. Możesz pobrać stąd biblioteka Tinyxml.

#włączać
#włączać
#włączać
#include "tinyxml2.CPP "
za pomocą przestrzeni nazw Std;
za pomocą przestrzeni nazw TinyXML2;
int Main (void)

Cout << "\nParsing my students data (sample.xml)… " << endl;
// Przeczytaj próbkę.plik XML
Xmldocument Doc;
Doc.Plik ładujący (”próbka.xml ");
const char* title = Doc.FirstChillelement („MESTudentsData”)-> FirstChillelement („Student”)-> getText ();
printf („Nazwa studenta: %s \ n”, tytuł);
XmlText* TextNode = Doc.LastChillelement („MESTUDENTSDATA”)-> LASTCHILDElement („Student”)-> FirstChild ()-> totext ();
title = textNode-> wartość ();
printf („Nazwa studenta: %s \ n”, tytuł);
powrót 0;

Wniosek

W tym artykule krótko omówiliśmy XML i przyjrzeliśmy się trzema różnymi przykładami przeanalizowania XML w C++. Tinyxml to minimalistyczna biblioteka do analizowania danych XML. Większość programistów używa głównie RapidXML lub Pugixml do analizowania danych XML.