C ++

Як проаналізувати XML в C ++

Як проаналізувати XML в C ++

У цій статті ми обговоримо, як проаналізувати XML на мові програмування С ++. Ми побачимо кілька робочих прикладів для розуміння механізму розбору XML у C++.

Що таке XML?

XML - мова розмітки і в основному використовується для організованого зберігання та передачі даних. XML розшифровується як розширювана мова розмітки. Це дуже схоже на HTML. XML повністю зосереджений на зберіганні та передачі даних, тоді як HTML використовується для відображення даних у браузері.

Зразок файлу XML / синтаксису XML

Ось зразок XML-файлу:




Том


Дрейк

На відміну від HTML, це мова розмітки, орієнтована на теги, і ми можемо визначити власний тег у файлі XML. У наведеному вище прикладі ми маємо кілька визначених користувачем тегів, таких як “". Кожен тег матиме відповідний кінцевий тег. “"- кінцевий тег для"". Ми можемо визначити стільки визначених користувачем тегів, скільки ми хочемо впорядкувати дані.

Розбір бібліотек у C ++:

Існують різні бібліотеки для аналізу даних XML у більшості мов програмування високого рівня. С ++ не є винятком. Ось найпопулярніші бібліотеки C ++ для синтаксичного аналізу даних XML:

  1. RapidXML
  2. PugiXML
  3. TinyXML

Як випливає з назви, RapidXML в основному орієнтований на швидкість, і це бібліотека синтаксичного аналізу стилів DOM. PugiXML підтримує перетворення Unicode. Можливо, вам захочеться використовувати PugiXML, якщо ви хочете конвертувати документ UTF-16 у 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 "rapidxml.hpp "
використання простору імен std;
використання простору імен rapidxml;
xml_document <> doc
xml_node <> * root_node = NULL;
int main (void)

кут << "\nParsing my students data (sample.xml)… " << endl;
// Прочитати зразок.XML-файл
ifstream theFile ("зразок.xml ");
вектор буфер ((istreambuf_iterator(theFile)), istreambuf_iterator());
буфер.push_back ('\ 0');
// Проаналізуйте буфер
док.розбір<0>(& буфер [0]);
// Знайти кореневий вузол
root_node = doc.first_node ("MyStudentsData");
// Ітерація над студентськими вузлами
для (xml_node <> * student_node = root_node-> first_node ("Student"); student_node; student_node = student_node-> next_sibling ())

кут << "\nStudent Type =   " << student_node->first_attribute ("тип_студента") -> значення ();
кут << endl;
// Поміркуйте над іменами учнів
для (xml_node <> * student_name_node = student_node-> first_node ("Name"); student_name_node; student_name_node = student_name_node-> next_sibling ())

кут << "Student Name =   " << student_name_node->значення ();
кут << endl;

кут << endl;

повернути 0;

Приклад-2: Проаналізуйте XML на C ++ за допомогою PugiXML

У цьому прикладі програми ми продемонструємо, як проаналізувати xml за допомогою бібліотеки PugiXML у C++. Ось вхідний файл XML (зразок.xml):











У цьому прикладі програми ми продемонструємо, як проаналізувати xml за допомогою бібліотеки pugixml у C++. Ви можете завантажити бібліотеку PugiXML тут.

#включати
#include "pugixml.hpp "
використання простору імен std;
використання простору імен pugi;
int main ()

кут << "\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.begin (); це != інструменти.кінець (); ++ це)

кут << "Employees:";
для (xml_attribute_iterator ait = it-> attributes_begin (); ait != it-> attributes_end (); ++ ait)

кут << " " << ait->ім'я () << "=" << ait->значення ();

кут << endl;

кут << endl;
повернути 0;

Приклад-3: Проаналізуйте XML у C ++ за допомогою TinyXML

У цьому прикладі програми ми продемонструємо, як проаналізувати xml за допомогою бібліотеки TinyXML у C++. Ось вхідний файл XML (зразок.xml):



Джон
Шон
Сара

У цьому прикладі програми ми продемонструємо, як проаналізувати xml за допомогою бібліотеки TinyXML у C++. Ви можете завантажити бібліотеку TinyXML тут.

#включати
#включати
#включати
#include "tinyxml2.cpp "
використання простору імен std;
використання простору імен tinyxml2;
int main (void)

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

Висновок

У цій статті ми коротко обговорили XML і розглянули три різні приклади того, як проаналізувати XML у C++. TinyXML - це мінімалістична бібліотека для аналізу даних XML.  Більшість програмістів в основному використовують RapidXML або PugiXML для синтаксичного аналізу даних XML.

How to reverse Mouse and Touchpads scrolling direction in Windows 10
Mouse and Touchpads not only make computing easy but more efficient and less time-consuming. We cannot imagine a life without these devices, but still...
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...
Безкоштовні ігри з відкритим кодом для розробки ігор Linux
У цій статті буде розглянуто перелік безкоштовних ігрових механізмів з відкритим кодом, які можна використовувати для розробки 2D та 3D ігор на Linux....