Como analisar XML em C ++

How Parse Xml 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:



versão='1.0' codificação='utf-8'?>

>

student_type='Meio período'>

>Tom>

>

student_type='Tempo total'>

>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 oferece suporte à conversão de Unicode. Você pode usar o PugiXML se quiser converter documentos UTF-16 em 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 importa com a velocidade, pode escolher TinyXML.

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



  • Exemplo-1: analisar XML em C ++ usando RapidXML
  • Exemplo-2: analisar XML em C ++ usando PugiXML
  • Exemplo-3: analisar XML em C ++ usando TinyXML

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 (sample.xml):

versão='1.0' codificação='utf-8'?>

>

student_type='Meio período'>

>João>

>

student_type='Tempo total'>

>Sean>

>

student_type='Meio período'>

>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 em Aqui .

#incluir
#incluir
#incluir
#include 'rapidxml.hpp'

usando namespacehoras;
usando namespacerapidxml;


xml_documentdoc
xml_node *root_node= NULO;

inta Principal(vazio)
{
custo << ' nAnalisando os dados dos meus alunos (sample.xml) ..... ' <<endl;

// Leia o arquivo sample.xml
ifstream theFile('sample.xml');
vetor<Caracteres>amortecedor((istreambuf_iterator<Caracteres>(o arquivo)), istreambuf_iterator<Caracteres>());
amortecedor.retrocesso(' 0');

// Analisa o buffer
doc.analisar<0>(Eamortecedor[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('Aluna');student_node;student_node=student_node->next_sibling())
{
custo << ' nTipo de aluno = ' <<student_node->first_attribute('student_type')->valor();
custo <<endl;

// Interate com os nomes dos alunos
para(xml_node *student_name_node=student_node->first_node('Nome');student_name_node;student_name_node=student_name_node->next_sibling())
{
custo << 'Nome do Aluno =' <<student_name_node->valor();
custo <<endl;
}
custo <<endl;
}

Retorna 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 (sample.xml):

versão='1.0' codificação='UTF-8' estar sozinho='não' ?>

FormatVersion='1'>

>

Nome='João' Modelo='Meio período'>

>

Nome='Sean' Modelo='Tempo total'>

>

Nome='Sarah' Modelo='Meio período'>

>

>

>

Neste programa de exemplo, demonstraremos como analisar xml usando a biblioteca pugixml em C ++. Você pode baixar a biblioteca PugiXML em Aqui .

#incluir
#include 'pugixml.hpp'

usando namespacehoras;
usando namespacepugi;

inta Principal()
{
custo << ' nAnalisando dados de funcionários (sample.xml) ..... n n';


xml_document doc;

// carregue o arquivo XML
E se (!doc.load_file('sample.xml')) Retorna -1;

ferramentas xml_node=doc.filho('EmployeesData').filho('Funcionários');


para (xml_node_iterator it=Ferramentas.começar();isto!=Ferramentas.fim(); ++isto)
{
custo << 'Funcionários:';

para (xml_attribute_iterator ait=isto->atributos_begin();pertencer!=isto->attribute_end(); ++pertencer)
{
custo << '' <<pertencer->nome() << '=' <<pertencer->valor();
}

custo <<endl;
}

custo <<endl;

Retorna 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 (sample.xml):

versão='1.0' codificação='utf-8'?>

>

>João>

>Sean>

>Sarah>

>

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

#incluir
#incluir
#incluir
#include 'tinyxml2.cpp'

usando namespacehoras;
usando namespacetinyxml2;


inta Principal(vazio)
{
custo << ' nAnalisando os dados dos meus alunos (sample.xml) ..... ' <<endl;

// Leia o arquivo sample.xml
XMLDocument doc;
doc.LoadFile( 'sample.xml' );

const Caracteres*título=doc.FirstChildElement( 'MyStudentsData' )->FirstChildElement( 'Aluna' )->GetText();
printf( 'Nome do aluno:% s n', título);


XMLText*textNode=doc.LastChildElement( 'MyStudentsData' )->LastChildElement( 'Aluna' )->Primeiro filho()->Para texto();
título=textNode->Valor();
printf( 'Nome do aluno:% s n', título);


Retorna 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.