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'?>
>
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:
- RapidXML
- PugiXML
- 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'?>>
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' ?>>
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'?>>
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.