Como trabalhar com processamento XML em C++

Como trabalhar com processamento XML em C++

Aspose.Cells FOSS for C++ includes a lightweight XML processing layer used internally for reading and writing Open XML parts. The XmlDocument, XmlElement, e XmlAttribute classes fornecem acesso programático a dados XML. Este guia abrange o carregamento de XML, atravessando elementos e serializando documentos.

Guia passo a passo

Passo 1: Prepare a construção

cmake_minimum_required(VERSION 3.15)
project(XmlProcessing CXX)
set(CMAKE_CXX_STANDARD 17)

add_subdirectory(path/to/Aspose.Cells-FOSS-for-Cpp)
add_executable(XmlProcessing main.cpp)
target_link_libraries(XmlProcessing PRIVATE Aspose.Cells.Foss.Cpp)

Passo 2: Inclua cabeçalhos

#include "aspose/cells_foss/XmlDocument.h"
#include "aspose/cells_foss/XmlElement.h"
#include "aspose/cells_foss/XmlAttribute.h"

using namespace Aspose::Cells_FOSS;

Passo 3: Carregar um documento XML

Utilização: XmlDocument::Load para analisar uma cadeia XML na árvore de documentos em memória:

int main() {
    XmlDocument doc;
    doc.Load("<root><item key=\"a\">Hello</item><item key=\"b\">World</item></root>");
    return 0;
}

Passo 4: Verificar elementos nulos

XmlElement usa um modelo baseado em manopla um elemento retornado de uma rota faltante é nulo. Sempre verifique IsNull() antes de aceder aos dados:

XmlElement root = doc.GetRootElement();
if (!root.IsNull()) {
    std::string val = root.GetValue();
}

Passo 5: Atributos transversais

Utilização: XmlElement::GetAttributes() Cada atributo de manipulação expõe o seu nome e valor:

auto attrs = root.GetAttributes();
for (auto& attr : attrs) {
    bool isNull = attr.IsNull();
}

Passo 6: Serialização para UTF-8 String

Utilização: XmlDocument::SaveToUtf8() para obter o XML serializado:

std::string xml = doc.SaveToUtf8();

Passo 7: Lidar com erros de análise

Embalagem XmlDocument::Load num bloco de tentativa/captura ao processar XML não confiável:

try {
    doc.Load(xmlContent);
} catch (const XmlParsingException& ex) {
    // Handle malformed XML
}

Problemas comuns e soluções

IsNull() retorna a verdade inesperadamente. O caminho do elemento não existe no documento. Verifique se a estrutura XML corresponde ao esquema esperado antes de atravessar o documento .

XmlParsingException em carga A entrada está malformada ou contém entidades não suportadas. Valide o XML com uma ferramenta externa antes de passá-lo para a Load.

SaveToUtf8() retorna saída inesperada A estrutura do documento foi modificada após a publicação de um relatório sobre o processo. Load.Verificar todos os intermediários . Build operações correctamente concluídas.

Atributos não encontrados A pesquisa de atributos é sensível a maiúsculas. Verifique se o nome do atributo corresponde exatamente como aparece na fonte XML.

Resultado vazio de: GetValue() Os nós de texto que contêm apenas espaço branco podem retornar uma cadeia vazia. Verifique o XML bruto para confirmar se o elemento tem conteúdo não-espaço branco.

Perguntas Frequentes

A camada XML destina-se apenas a aplicações ou utilizações internas?

A Comissão XmlDocument, XmlElement, e XmlAttribute As classes do mapping são parte da API pública e podem ser usadas diretamente.WorkbookXmlMapper, WorksheetXmlMapper, etc.) são auxiliares internos chamados por: XlsxWorkbookSerializer e não são destinados a utilização directa.

Posso criar um novo documento XML a partir do zero?

Sim, usa. XmlDocument::Build para construir um documento programaticamente, em seguida, usar XmlElement e a) XmlAttribute::MakeAttribute para adicionar nós.

- Sim . XmlDocument Suporte para consultas XPath?

Não. A implementação atual fornece apenas a travessa de manobras de elementos; XPath não é suportado.

O que a codificação faz? SaveToUtf8() Produzir?

A saída é sempre XML codificado em UTF-8.<?xml version="1.0" encoding="UTF-8"?>) está incluído na produção.

Posso usar o meu telefone? XmlDocument Para ler partes de arquivo XLSX?

As partes de arquivo XLSX são gerenciadas internamente por: XlsxWorkbookSerializer. Não há API pública para extrair partes de arquivo cru. Use Workbook para todas as operações de carga/salvamento XLSX.

Ver também:

 Português