C ++

Como analisar XML em C ++

Como analisar XML em C ++

Neste artigo, vamos discutir 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 forma organizada. XML significa eXtensible Markup Language. É muito semelhante ao HTML. O XML é totalmente focado em armazenar e transferir os dados, enquanto o HTML é usado para exibir os dados no navegador.

Um exemplo de arquivo XML / sintaxe XML

Aqui está um arquivo XML de amostra:




Tom


Drake

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

Analisando 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 é focado principalmente na velocidade e é uma biblioteca de análise de estilo DOM. PugiXML suporta conversão Unicode. Você pode querer usar PugiXML se quiser converter documentos UTF-16 para UTF-8. TinyXML é uma versão mínima para analisar dados XML e não tão rápido em comparação com os dois anteriores. Se você deseja apenas fazer o trabalho e não se preocupa com a velocidade, pode escolher TinyXML.

Exemplos
Agora, temos uma compreensão básica de XML e bibliotecas de análise XML em C++. Vejamos agora alguns exemplos para analisar o arquivo xml em C ++:

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

Exemplo-1: analisar 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):




João


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 namespace 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');
// Analisa o buffer
doc.analisar<0>(& buffer [0]);
// Descubra o nó raiz
root_node = doc.first_node ("MyStudentsData");
// Iterar sobre os nós de alunos
para (xml_node <> * student_node = root_node-> first_node ("Student"); student_node; student_node = student_node-> next_sibling ())

cout << "\nStudent Type =   " << student_node->first_attribute ("student_type") -> value ();
cout << endl;
// Interate com os nomes dos alunos
para (xml_node <> * student_name_node = student_node-> first_node ("Name"); student_name_node; student_name_node = student_name_node-> next_sibling ())

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

cout << endl;

return 0;

Exemplo-2: analisar 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;
using namespace pugi;
int main ()

cout << "\nParsing employees data (sample.xml)… \n\n";
xml_document doc;
// carregue o arquivo XML
E se (!doc.load_file ("amostra.xml ")) return -1;
xml_node tools = doc.filho ("EmployeesData").filho ("Funcionários");
para (xml_node_iterator it = ferramentas.começar(); isto != ferramentas.fim(); ++ it)

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

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

cout << endl;

cout << endl;
return 0;

Exemplo-3: analisar 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):



João
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 o 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);
return 0;

Conclusão

Neste artigo, discutimos brevemente o XML e examinamos 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.

Como instalar e jogar Doom no Linux
Introdução ao Doom A série Doom teve origem nos anos 90 após o lançamento do Doom original. Foi um sucesso instantâneo e, a partir desse momento, a sé...
Vulkan para usuários de Linux
A cada nova geração de placas gráficas, vemos os desenvolvedores de jogos ultrapassarem os limites da fidelidade gráfica e se aproximarem mais do foto...
OpenTTD vs Simutrans
Criar sua própria simulação de transporte pode ser divertido, relaxante e extremamente atraente. É por isso que você precisa ter certeza de experiment...