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:
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 "
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:
- RapidXML
- PugiXML
- 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 ++:
- Ejemplo-1: Analizar XML en C ++ usando RapidXML
- Ejemplo-2: Analizar XML en C ++ usando PugiXML
- Ejemplo-3: Analizar XML en C ++ usando TinyXML
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):
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.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):
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.