Como analisar XML em C ++

Como analisar XML em C ++

Neste artigo, discutiremos como analisar XML na linguagem de programação C ++. Veremos vários exemplos de trabalho para entender o mecanismo de análise XML em C++.

O que é xml?

XML é uma linguagem de marcação e é usada principalmente para armazenar e transferir dados de maneira organizada. XML significa linguagem de marcação extensível. É muito semelhante ao HTML. O XML está completamente focado em armazenar e transferir os dados, enquanto o HTML é usado para exibir os dados no navegador.

Uma amostra de arquivo xml/sintaxe xml

Aqui está um exemplo de arquivo XML:




Tom


Drake

Ao contrário do HTML, é uma linguagem de marcação orientada a tags, e podemos definir nossa própria tag em um arquivo XML. No exemplo acima, temos várias tags definidas pelo usuário, como "". Cada etiqueta terá a etiqueta final correspondente. "" É a tag final para "". Podemos definir tantas tags definidas pelo usuário quanto queremos organizar os dados.

Analisar bibliotecas em C ++:

Existem várias bibliotecas para analisar dados XML na maioria das linguagens de programação de alto nível. C ++ não é uma exceção. Aqui estão as bibliotecas C ++ mais populares para analisar dados XML:

  1. Rapidxml
  2. Pugixml
  3. Tinyxml

Como o nome sugere, o RapidXML está focado principalmente na velocidade, e é uma biblioteca de análise do estilo DOM. O PUGIXML suporta a conversão Unicode. Você pode querer usar o Pugixml se quiser converter UTF-16 DOC para UTF-8. Tinyxml é uma versão nua para analisar dados XML e não tão rápido em comparação com os dois anteriores. Se você quiser apenas fazer o trabalho e não se importar com a velocidade, você pode escolher Tinyxml.

Exemplos
Agora, temos um entendimento básico das bibliotecas XML e XML Parsing em C++. Agora vamos olhar para alguns exemplos para analisar o arquivo XML em C ++:

  • Exemplo 1: Parse XML em C ++ usando RapidXML
  • Exemplo 2: Parse XML em C ++ usando Pugixml
  • Exemplo-3: Parse XML em C ++ usando TinyXML

Em cada um desses exemplos, usaremos as respectivas bibliotecas para analisar um arquivo XML de amostra.

Exemplo 1: Parse XML em C ++ usando RapidXML

Neste programa de exemplo, demonstraremos como analisar XML usando a biblioteca RAPIDXML em C++. Aqui está o arquivo XML de entrada (amostra.xml):




John


Sean


Sarah

Nosso objetivo aqui é analisar o arquivo XML acima usando C++. Aqui está o programa C ++ para analisar dados XML usando RAPIDXML. Você pode baixar a biblioteca RapidXML aqui.

#incluir
#incluir
#incluir
#include "RAPIDXML.HPP "
usando namespace std;
usando o espaço para nome RapidXML;
xml_document Doc
xml_node * root_node = null;
int main (vazio)

cout << "\nParsing my students data (sample.xml)… " << endl;
// Leia a amostra.Arquivo XML
ifstream thefile ("amostra.xml ");
vetor buffer ((isTreambuf_iterator(thefile)), isTreambuf_iterator());
amortecedor.push_back ('\ 0');
// analisar o buffer
Doc.analisar<0>(& buffer [0]);
// Descubra o nó raiz
root_node = doc.primeiro_node ("myStudentsData");
// itera sobre os nós do aluno
para (xml_node * student_node = root_node-> primeiro_node ("aluno");
student_node; student_node = student_node-> next_sibling ())

cout << "\nStudent Type = " <<
Student_Node-> First_attribute ("Student_type")-> value ();
cout << endl;
// interrompe os nomes dos alunos
para (xml_node * student_name_node = student_node-> primeiro_node ("name");
Student_name_node; student_name_node = student_name_node-> next_sibling ())

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

cout << endl;

retornar 0;

Exemplo 2: Parse XML em C ++ usando Pugixml

Neste programa de exemplo, demonstraremos como analisar XML usando a biblioteca Pugixml em C++. Aqui está o arquivo XML de entrada (amostra.xml):











Neste programa de exemplo, demonstraremos como analisar XML usando a biblioteca Pugixml em C++. Você pode baixar a biblioteca Pugixml aqui.

#incluir
#include "pugixml.HPP "
usando namespace std;
usando namespace Pugi;
int main ()

cout << "\nParsing employees data (sample.xml)… \n\n";
XML_Document Doc;
// Carregar o arquivo XML
se (!Doc.load_file ("amostra.xml ")) retornar -1;
xml_node Tools = Doc.Criança ("FuncionárioData").criança ("funcionários");
para (xml_node_iterator it = ferramentas.começar(); isto != ferramentas.fim(); ++ it)

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

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

cout << endl;

cout << endl;
retornar 0;

Exemplo-3: Parse XML em C ++ usando TinyXML

Neste programa de exemplo, demonstraremos como analisar XML usando a biblioteca TinyXML em C++. Aqui está o arquivo XML de entrada (amostra.xml):



John
Sean
Sarah

Neste programa de exemplo, demonstraremos como analisar XML usando a biblioteca TinyXML em C++. Você pode baixar a biblioteca tinyxml aqui.

#incluir
#incluir
#incluir
#include "tinyxml2.cpp "
usando namespace std;
usando namespace tinyxml2;
int main (vazio)

cout << "\nParsing my students data (sample.xml)… " << endl;
// Leia a amostra.Arquivo XML
Xmldocument Doc;
Doc.Loadfile ("amostra.xml ");
const char* title = doc.FirstChildElement ("MyStudentsData")-> FirstChildElement ("Student")-> getText ();
printf ("Nome do aluno: %s \ n", título);
XmlText* textNode = Doc.LastChildElement ("MyStudentsData")-> LastChildElement ("Student")-> FirstChild ()-> Totext ();
title = textNode-> value ();
printf ("Nome do aluno: %s \ n", título);
retornar 0;

Conclusão

Neste artigo, discutimos brevemente XML e analisamos três exemplos diferentes de como analisar XML em C++. TinyXML é uma biblioteca minimalista para analisar dados XML. A maioria dos programadores usa principalmente o RapidXml ou Pugixml para analisar dados XML.