C ++

Cómo analizar XML en C ++

Cómo analizar XML en C ++

En este artículo, vamos a discutir cómo analizar XML en el lenguaje de programación C ++. Veremos varios ejemplos de trabajo para comprender el mecanismo de análisis de XML en C++.

Que es XML?

XML es un lenguaje de marcado y se utiliza principalmente para almacenar y transferir datos de forma organizada. XML son las siglas de eXtensible Markup Language. Es muy similar a HTML. El XML está completamente enfocado en almacenar y transferir los datos, mientras que el HTML se usa para mostrar los datos en el navegador.

Un archivo XML de muestra / sintaxis XML

Aquí hay un archivo XML de muestra:




Tomás


Pato

A diferencia de HTML, es un lenguaje de marcado orientado a etiquetas, y podemos definir nuestra propia etiqueta en un archivo XML. En el ejemplo anterior, tenemos varias etiquetas definidas por el usuario, como "". Cada etiqueta tendrá la etiqueta final correspondiente. ""Es la etiqueta final de"". Podemos definir tantas etiquetas definidas por el usuario como queramos organizar los datos.

Análisis de bibliotecas en C ++:

Hay varias bibliotecas para analizar datos XML en la mayoría de los lenguajes de programación de alto nivel. C ++ no es una excepción. Estas son las bibliotecas de C ++ más populares para analizar datos XML:

  1. RapidXML
  2. PugiXML
  3. TinyXML

Como sugiere el nombre, RapidXML se centra principalmente en la velocidad y es una biblioteca de análisis de estilo DOM. PugiXML admite la conversión Unicode. Es posible que desee utilizar PugiXML si desea convertir UTF-16 doc a UTF-8. TinyXML es una versión mínima para analizar datos XML y no tan rápido en comparación con los dos anteriores. Si solo desea hacer el trabajo y no le importa la velocidad, puede elegir TinyXML.

Ejemplos de
Ahora, tenemos un conocimiento básico de XML y bibliotecas de análisis XML en C++. Veamos ahora un par de ejemplos para analizar el archivo xml en C ++:

En cada uno de estos ejemplos, usaremos las bibliotecas respectivas para analizar un archivo XML de muestra.

Ejemplo-1: Analizar XML en C ++ usando RapidXML

En este programa de ejemplo, demostraremos cómo analizar XML usando la biblioteca RapidXML en C++. Aquí está el archivo XML de entrada (ejemplo.xml):




John


Sean


Sarah

Nuestro objetivo aquí es analizar el archivo XML anterior usando C++. Aquí está el programa C ++ para analizar datos XML usando RapidXML. Puede descargar la biblioteca RapidXML desde aquí.

#incluir
#incluir
#incluir
#include "rapidxml.hpp "
usando el espacio de nombres std;
usando el espacio de nombres rapidxml;
xml_document <> doc
xml_node <> * root_node = NULL;
int main (vacío)

cout << "\nParsing my students data (sample.xml)… " << endl;
// Leer la muestra.archivo xml
ifstream theFile ("muestra.xml ");
vector buffer ((istreambuf_iterator(elArchivo)), istreambuf_iterator());
buffer.push_back ('\ 0');
// Analizar el búfer
Doc.analizar gramaticalmente<0>(& búfer [0]);
// Descubre el nodo raíz
root_node = doc.first_node ("Mis datos de estudiantes");
// Iterar sobre los nodos de los estudiantes
para (xml_node <> * estudiante_nodo = raíz_nodo-> primer_nodo ("Estudiante"); estudiante_nodo; estudiante_nodo = estudiante_nodo-> siguiente_sibling ())

cout << "\nStudent Type =   " << student_node->first_attribute ("tipo_estudiante") -> valor ();
cout << endl;
// Intente sobre los nombres de los estudiantes
for (xml_node <> * alumno_nombre_nodo = alumno_nodo-> primer_nodo ("Nombre"); alumno_nombre_nodo; alumno_nombre_nodo = alumno_nombre_nodo-> siguiente_sibling ())

cout << "Student Name =   " << student_name_node->valor();
cout << endl;

cout << endl;

return 0;

Ejemplo-2: Analizar XML en C ++ usando PugiXML

En este programa de ejemplo, demostraremos cómo analizar XML usando la biblioteca PugiXML en C++. Aquí está el archivo XML de entrada (ejemplo.xml):











En este programa de ejemplo, demostraremos cómo analizar xml usando la biblioteca pugixml en C++. Puede descargar la biblioteca PugiXML desde aquí.

#incluir
#include "pugixml.hpp "
usando el espacio de nombres std;
usando el espacio de nombres pugi;
int main ()

cout << "\nParsing employees data (sample.xml)… \n\n";
xml_document doc;
// carga el archivo XML
Si (!Doc.load_file ("muestra.xml ")) return -1;
xml_node herramientas = doc.hijo ("EmployeesData").hijo ("Empleados");
para (xml_node_iterator it = herramientas.empezar(); eso != herramientas.final(); ++ es)

cout << "Employees:";
para (xml_attribute_iterator ait = it-> atributos_begin (); ait != it-> atributos_end (); ++ ait)

cout << " " << ait->nombre() << "=" << ait->valor();

cout << endl;

cout << endl;
return 0;

Ejemplo-3: Analizar XML en C ++ usando TinyXML

En este programa de ejemplo, demostraremos cómo analizar XML usando la biblioteca TinyXML en C++. Aquí está el archivo XML de entrada (ejemplo.xml):



John
Sean
Sarah

En este programa de ejemplo, demostraremos cómo analizar XML usando la biblioteca TinyXML en C++. Puede descargar la biblioteca TinyXML desde aquí.

#incluir
#incluir
#incluir
#include "tinyxml2.cpp "
usando el espacio de nombres std;
usando el espacio de nombres tinyxml2;
int main (vacío)

cout << "\nParsing my students data (sample.xml)… " << endl;
// Leer la muestra.archivo xml
XMLDocument doc;
Doc.LoadFile ("muestra.xml ");
const char * title = doc.FirstChildElement ("MyStudentsData") -> FirstChildElement ("Estudiante") -> GetText ();
printf ("Nombre del estudiante:% s \ n", título);
XMLText * textNode = doc.LastChildElement ("MyStudentsData") -> LastChildElement ("Estudiante") -> FirstChild () -> ToText ();
title = textNode-> Value ();
printf ("Nombre del estudiante:% s \ n", título);
return 0;

Conclusión

En este artículo, analizamos brevemente XML y analizamos tres ejemplos diferentes de cómo analizar XML en C++. TinyXML es una biblioteca minimalista para analizar datos XML.  La mayoría de los programadores utilizan principalmente RapidXML o PugiXML para analizar datos XML.

Cómo invertir la dirección de desplazamiento del mouse y los paneles táctiles en Windows 10
Ratón y Panel táctils no solo facilitan la informática, sino que también hacen que sea más eficiente y requieran menos tiempo. No podemos imaginar una...
Cómo cambiar el tamaño, el color y el esquema del puntero del mouse y del cursor en Windows 10
El puntero y el cursor del mouse en Windows 10 son aspectos muy importantes del sistema operativo. Esto también se puede decir de otros sistemas opera...
Motores de juegos gratuitos y de código abierto para desarrollar juegos de Linux
Este artículo cubrirá una lista de motores de juegos de código abierto y gratuitos que se pueden usar para desarrollar juegos 2D y 3D en Linux. Existe...