C ++

Как да анализирате XML в C ++

Как да анализирате XML в C ++

В тази статия ще обсъдим как да анализираме XML в езика за програмиране C ++. Ще видим няколко работни примера за разбиране на механизма за синтактичен анализ на XML в C++.

Какво е XML?

XML е език за маркиране и се използва главно за съхраняване и прехвърляне на данни по организиран начин. XML означава eXtensible Markup Language. Той е много подобен на HTML. XML е изцяло фокусиран върху съхранението и прехвърлянето на данните, докато HTML се използва за показване на данните в браузъра.

Примерен XML файл / XML синтаксис

Ето примерен XML файл:




Том


Дрейк

За разлика от HTML, той е ориентиран към маркери език за маркиране и ние можем да дефинираме собствения си маркер в XML файл. В горния пример имаме няколко дефинирани от потребителя маркери като „”. Всеки маркер ще има съответния краен маркер. „”Е крайният таг за„”. Можем да дефинираме толкова дефинирани от потребителя маркери, колкото искаме да организираме данните.

Разбор на библиотеки в C ++:

Има различни библиотеки за анализиране на XML данни в повечето езици за програмиране на високо ниво. C ++ не е изключение. Ето най-популярните C ++ библиотеки за анализ на XML данни:

  1. RapidXML
  2. PugiXML
  3. TinyXML

Както подсказва името, RapidXML е фокусиран главно върху скоростта и е библиотека за разбор на DOM стил. PugiXML поддържа преобразуване на Unicode. Може да искате да използвате PugiXML, ако искате да конвертирате UTF-16 doc в UTF-8. TinyXML е минимална версия за анализ на XML данни и не е толкова бърза в сравнение с предишните две. Ако искате просто да свършите работата и не ви пука за скоростта, можете да изберете TinyXML.

Примери
Сега имаме основно разбиране за библиотеките за синтактичен анализ на XML и XML в C++. Нека сега разгледаме няколко примера за анализиране на xml файл в C ++:

Във всеки от тези примери ще използваме съответните библиотеки, за да анализираме примерен XML файл.

Пример-1: Анализирайте XML в C ++ с помощта на RapidXML

В този пример на програма ще демонстрираме как да анализираме xml с помощта на RapidXML библиотека в C++. Ето входния XML файл (пример.xml):




Джон


Шон


Сара

Нашата цел тук е да анализираме горния XML файл с помощта на C++. Ето програмата C ++ за синтактичен анализ на XML данни с помощта на RapidXML. Можете да изтеглите библиотеката RapidXML от Тук.

#include
#include
#include
#include "rapidxml.hpp "
използване на пространство от имена std;
използване на пространство от имена rapidxml;
xml_document <> doc
xml_node <> * root_node = NULL;
int main (void)

Cout << "\nParsing my students data (sample.xml)… " << endl;
// Прочетете пробата.xml файл
ifstream theFile ("проба.xml ");
вектор буфер ((istreambuf_iterator(theFile)), istreambuf_iterator());
буфер.push_back ('\ 0');
// Анализиране на буфера
док.разбор<0>(& буфер [0]);
// Разберете коренния възел
root_node = документ.first_node ("MyStudentsData");
// Итерация над студентските възли
за (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;
// Интерес върху имената на студентите
за (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->стойност ();
Cout << endl;

Cout << endl;

връщане 0;

Пример-2: Анализирайте XML в C ++ с помощта на PugiXML

В този пример на програма ще демонстрираме как да анализираме xml с помощта на библиотеката PugiXML в C++. Ето входния XML файл (пример.xml):











В този пример на програма ще демонстрираме как да анализираме xml, използвайки pugixml библиотека в C++. Можете да изтеглите библиотеката PugiXML от Тук.

#include
#include "pugixml.hpp "
използване на пространство от имена std;
използване на пространство от имена pugi;
int main ()

Cout << "\nParsing employees data (sample.xml)… \n\n";
xml_document doc;
// зареждаме XML файла
ако (!док.load_file ("пример.xml ")) return -1;
xml_node tools = doc.дете ("EmployeesData").дете („Служители“);
за (xml_node_iterator it = tools.начало (); то != инструменти.край(); ++ то)

Cout << "Employees:";
за (xml_attribute_iterator ait = it-> attributes_begin (); ait != it-> attributes_end (); ++ ait)

Cout << " " << ait->име () << "=" << ait->стойност ();

Cout << endl;

Cout << endl;
връщане 0;

Пример-3: Анализирайте XML в C ++ с помощта на TinyXML

В този пример на програма ще демонстрираме как да анализираме xml с помощта на библиотеката TinyXML в C++. Ето входния XML файл (пример.xml):



Джон
Шон
Сара

В този пример на програма ще демонстрираме как да анализираме xml с помощта на TinyXML библиотека в C++. Можете да изтеглите библиотеката TinyXML от Тук.

#include
#include
#include
#include "tinyxml2.cpp "
използване на пространство от имена std;
използване на пространство от имена tinyxml2;
int main (void)

Cout << "\nParsing my students data (sample.xml)… " << endl;
// Прочетете пробата.xml файл
XMLDocument doc;
док.LoadFile ("проба.xml ");
const char * заглавие = док.FirstChildElement ("MyStudentsData") -> FirstChildElement ("Student") -> GetText ();
printf ("Име на студент:% s \ n", заглавие);
XMLText * textNode = документ.LastChildElement ("MyStudentsData") -> LastChildElement ("Student") -> FirstChild () -> ToText ();
заглавие = textNode-> Стойност ();
printf ("Име на студент:% s \ n", заглавие);
връщане 0;

Заключение

В тази статия обсъдихме накратко XML и разгледахме три различни примера за това как да анализираме XML в C++. TinyXML е минималистична библиотека за синтактичен анализ на XML данни.  Повечето програмисти използват предимно RapidXML или PugiXML за синтактичен анализ на XML данни.

Най-добрите приложения за картографиране на геймпад за Linux
Ако искате да играете игри на Linux с геймпад вместо типична система за въвеждане на клавиатура и мишка, има някои полезни приложения за вас. Много ко...
Полезни инструменти за геймърите на Linux
Ако искате да играете игри на Linux, има вероятност да сте използвали приложения и помощни програми като Wine, Lutris и OBS Studio, за да подобрите иг...
HD Remastered Games за Linux, които никога преди не са имали издание на Linux
Много разработчици и издатели на игри излизат с HD ремастер на стари игри, за да удължат живота на франчайза, моля феновете, които искат съвместимост ...