В этой статье мы собираемся обсудить, как анализировать XML на языке программирования C ++. Мы увидим несколько рабочих примеров, чтобы понять механизм синтаксического анализа XML в C++.
Что такое XML?
XML - это язык разметки, который в основном используется для хранения и передачи данных в организованном порядке. XML означает расширяемый язык разметки. Он очень похож на HTML. XML полностью ориентирован на хранение и передачу данных, тогда как HTML используется для отображения данных в браузере.
Пример XML-файла / XML-синтаксиса
Вот пример XML-файла:
В отличие от HTML, это язык разметки, ориентированный на теги, и мы можем определить наш собственный тег в файле XML. В приведенном выше примере у нас есть несколько пользовательских тегов, таких как «
Разбор библиотек в C ++:
Существуют различные библиотеки для анализа XML-данных на большинстве языков программирования высокого уровня. C ++ не исключение. Вот самые популярные библиотеки 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 <> документ
xml_node <> * root_node = NULL;
int main (пусто)
cout << "\nParsing my students data (sample.xml)… " << endl;
// Читаем образец.xml файл
ifstream theFile ("образец.xml ");
вектор
буфер.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->первый_атрибут ("тип_студента") -> значение ();
cout << endl;
// Взаимодействовать с именами учеников
для (xml_node <> * student_name_node = student_node-> first_node ("Имя"); 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 "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 = документ.ребенок ("EmployeesData").child («Сотрудники»);
для (xml_node_iterator it = tools.начинать(); Это != инструменты.конец(); ++ это)
cout << "Employees:";
для (xml_attribute_iterator ait = it-> attributes_begin (); ait != это-> attributes_end (); ++ айт)
cout << " " << ait->название() << "=" << ait->значение();
cout << endl;
cout << endl;
возврат 0;
Пример-3: синтаксический анализ XML в C ++ с использованием TinyXML
В этом примере программы мы продемонстрируем, как анализировать xml с помощью библиотеки TinyXML на C++. Вот входной XML-файл (образец.xml):
В этом примере программы мы продемонстрируем, как анализировать xml с помощью библиотеки TinyXML на C++. Вы можете скачать библиотеку TinyXML отсюда.
#включать#включать
#включать
#include "tinyxml2".cpp "
используя пространство имен std;
используя пространство имен tinyxml2;
int main (пусто)
cout << "\nParsing my students data (sample.xml)… " << endl;
// Читаем образец.xml файл
XMLDocument doc;
док.LoadFile ("образец.xml ");
const char * title = doc.FirstChildElement ("MyStudentsData") -> FirstChildElement ("Студент") -> GetText ();
printf ("Имя ученика:% s \ n", название);
XMLText * textNode = документ.LastChildElement ("MyStudentsData") -> LastChildElement ("Student") -> FirstChild () -> ToText ();
title = textNode-> Значение ();
printf ("Имя ученика:% s \ n", название);
возврат 0;
Заключение
В этой статье мы кратко обсудили XML и рассмотрели три различных примера того, как анализировать XML в C++. TinyXML - минималистичная библиотека для анализа XML-данных. Большинство программистов в основном используют RapidXML или PugiXML для анализа XML-данных.