C++

Jak parsować XML w C++

Jak parsować XML w C++

W tym artykule omówimy, jak parsować XML w języku programowania C++. Zobaczymy kilka działających przykładów, aby zrozumieć mechanizm parsowania XML w C++.

Co to jest XML?

XML to język 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 skoncentrowany na przechowywaniu i przesyłaniu danych, podczas gdy HTML służy do wyświetlania danych w przeglądarce.

Przykładowy plik XML/składnia XML

Oto przykładowy plik XML:




Tomek


Kaczor

W przeciwieństwie do HTML, jest to język znaczników zorientowany na znaczniki i możemy zdefiniować własny znacznik w pliku XML. W powyższym przykładzie mamy kilka zdefiniowanych przez użytkownika tagów, takich jak „”. Każdy tag będzie miał odpowiadający mu tag końcowy. “” jest końcowym tagiem dla „”. Możemy zdefiniować tyle 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 szybkości i jest biblioteką analizującą styl DOM. PugiXML obsługuje konwersję Unicode. Możesz użyć PugiXML, jeśli chcesz przekonwertować dokument UTF-16 na UTF-8. TinyXML to minimalna wersja do analizowania danych XML i nie tak szybka w porównaniu z poprzednimi dwoma. Jeśli chcesz po prostu wykonać zadanie i nie zależy Ci na szybkości, możesz wybrać TinyXML.

Przykłady
Teraz mamy podstawową wiedzę na temat bibliotek analizujących XML i XML w C++. Przyjrzyjmy się teraz kilku przykładom parsowania pliku xml w C++:

W każdym z tych przykładów użyjemy odpowiednich bibliotek, aby przeanalizować przykładowy plik XML.

Przykład-1: Parsowanie XML w C++ przy użyciu RapidXML

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




Jan


Sean


Sara

Naszym celem jest przeanalizowanie powyższego pliku XML za pomocą C++. Oto program C++ do analizowania danych XML za pomocą RapidXML. Bibliotekę RapidXML możesz pobrać tutaj.

#zawierać
#zawierać
#zawierać
#włącz „rapidxml.HPP"
przy użyciu standardowej przestrzeni nazw;
używanie przestrzeni nazw rapidxml;
xml_document<> dokument
xml_node<> * root_node = NULL;
int główny (unieważniony)

Cout << "\nParsing my students data (sample.xml)… " << endl;
// Przeczytaj próbkę.plik xml
ifstream theFile ("przykład.xml");
wektor bufor((istreambuf_iterator(Plik)), istreambuf_iterator());
bufor.push_back('\0');
// Przeanalizuj bufor
doktor.analizować<0>(&bufor[0]);
// Znajdź węzeł główny
węzeł_główny = dokument.first_node("MojeDaneStudentów");
// Iteruj po węzłach ucznia
for (xml_node<> * student_node = root_node->first_node("Student"); student_node; student_node = student_node->next_sibling())

Cout << "\nStudent Type =   " << student_node->pierwszy_atrybut("typ_studenta")->wartość();
Cout << endl;
// Interakcja nad imionami uczniów
for(xml_node<> * nazwa_ucznia_node = węzeł_ucznia->pierwszy_węzeł("Nazwa"); nazwa_ucznia_węzeł; nazwa_ucznia_węzeł = nazwa_ucznia_węzeł->next_sibling())

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

Cout << endl;

zwróć 0;

Przykład-2: Parsowanie XML w C++ przy użyciu PugiXML

W tym przykładowym programie zademonstrujemy, jak parsować xml za pomocą biblioteki PugiXML w C++. Oto wejściowy plik XML (przykład.xml):











W tym przykładowym programie zademonstrujemy, jak parsować xml za pomocą biblioteki pugixml w C++. Bibliotekę PugiXML możesz pobrać tutaj.

#zawierać
#dołącz „pugixml.HPP"
przy użyciu standardowej przestrzeni nazw;
używanie pugi przestrzeni nazw;
int main()

Cout << "\nParsing employees data (sample.xml)… \n\n";
dokument xml_document;
// załaduj plik XML
gdyby (!doktor.load_file("przykład.xml")) powrót -1;
narzędzia xml_node = dokument.child("Dane Pracowników").dziecko("Pracownicy");
for (xml_node_iterator it = narzędzia.zaczynać(); to != narzędzia.koniec(); ++to)

Cout << "Employees:";
for (xml_attribute_iterator ait = it->attributes_begin(); ait != it->atrybuty_koniec(); ++ait)

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

Cout << endl;

Cout << endl;
zwróć 0;

Przykład 3: Parsowanie XML w C++ przy użyciu TinyXML

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



Jan
Sean
Sara

W tym przykładowym programie zademonstrujemy, jak parsować xml za pomocą biblioteki TinyXML w C++. Bibliotekę TinyXML możesz pobrać tutaj.

#zawierać
#zawierać
#zawierać
#include "tinyxml2.cpp"
przy użyciu standardowej przestrzeni nazw;
za pomocą przestrzeni nazw tinyxml2;
int główny (unieważniony)

Cout << "\nParsing my students data (sample.xml)… " << endl;
// Przeczytaj próbkę.plik xml
Dokument XMLDokument;
doktor.LoadFile( "przykład.xml" );
const char* title = doc.FirstChildElement( "MyStudentsData" )->FirstChildElement( "Student" )->GetText();
printf( "Nazwisko ucznia: %s\n", tytuł );
XMLText* textNode = doc.LastChildElement( "MyStudentsData" )->LastChildElement( "Student" )->FirstChild()->ToText();
title = textNode->Value();
printf( "Nazwisko ucznia: %s\n", tytuł );
zwróć 0;

Wniosek

W tym artykule krótko omówiliśmy XML i przyjrzeliśmy się trzem różnym przykładom parsowania XML w C++. TinyXML to minimalistyczna biblioteka do analizowania danych XML XML.  Większość programistów używa głównie RapidXML lub PugiXML do analizowania danych XML XML.

How to change Mouse pointer and cursor size, color & scheme on Windows 10
The mouse pointer and cursor in Windows 10 are very important aspects of the operating system. This can be said for other operating systems as well, s...
Gry Darmowe i otwarte silniki gier do tworzenia gier na Linuksa
Darmowe i otwarte silniki gier do tworzenia gier na Linuksa
Ten artykuł zawiera listę darmowych i otwartych silników gier, których można używać do tworzenia gier 2D i 3D w systemie Linux. Istnieje wiele takich ...
Gry Samouczek Shadow of the Tomb Raider dla systemu Linux
Samouczek Shadow of the Tomb Raider dla systemu Linux
Shadow of the Tomb Raider to dwunasty dodatek do serii Tomb Raider - przygodowej serii gier akcji stworzonej przez Eidos Montreal. Gra została dość do...