У цій статті ми обговоримо, як проаналізувати XML на мові програмування С ++. Ми побачимо кілька робочих прикладів для розуміння механізму розбору XML у C++.
Що таке XML?
XML - мова розмітки і в основному використовується для організованого зберігання та передачі даних. XML розшифровується як розширювана мова розмітки. Це дуже схоже на HTML. XML повністю зосереджений на зберіганні та передачі даних, тоді як HTML використовується для відображення даних у браузері.
Зразок файлу XML / синтаксису XML
Ось зразок XML-файлу:
На відміну від HTML, це мова розмітки, орієнтована на теги, і ми можемо визначити власний тег у файлі XML. У наведеному вище прикладі ми маємо кілька визначених користувачем тегів, таких як “
Розбір бібліотек у C ++:
Існують різні бібліотеки для аналізу даних XML у більшості мов програмування високого рівня. С ++ не є винятком. Ось найпопулярніші бібліотеки C ++ для синтаксичного аналізу даних XML:
- RapidXML
- PugiXML
- TinyXML
Як випливає з назви, RapidXML в основному орієнтований на швидкість, і це бібліотека синтаксичного аналізу стилів DOM. PugiXML підтримує перетворення Unicode. Можливо, вам захочеться використовувати PugiXML, якщо ви хочете конвертувати документ UTF-16 у UTF-8. TinyXML - це мінімальна версія для синтаксичного аналізу даних XML, і не така швидка в порівнянні з попередніми двома. Якщо ви хочете просто виконати роботу і вам не важлива швидкість, ви можете вибрати TinyXML.
Приклади
Тепер ми маємо базове розуміння бібліотек синтаксичного аналізу XML та XML у C++. Давайте тепер розглянемо кілька прикладів синтаксичного аналізу файлу xml у C ++:
- Приклад-1: Проаналізуйте XML у C ++ за допомогою RapidXML
- Приклад-2: Проаналізуйте XML на C ++ за допомогою PugiXML
- Приклад-3: Проаналізуйте XML у C ++ за допомогою TinyXML
У кожному з цих прикладів ми будемо використовувати відповідні бібліотеки для синтаксичного аналізу зразка 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 ");
вектор
буфер.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.