Trabalhar com Processamento XML
Trabalhar com Processamento XML
Aspose.Cells FOSS for C++ uses a lightweight internal XML layer to read and write the Open XML parts that make up an XLSX file. The XmlDocument, XmlElement, e XmlAttribute As classes formam o núcleo desta camada.
Carregamento de um documento XML
Utilização: XmlDocument::Load Para analisar uma cadeia de caracteres XML ou um ficheiro na árvore do documento em memória:
#include "aspose/cells_foss/XmlDocument.h"
using namespace Aspose::Cells_FOSS;
// Load from string content
XmlDocument doc;
doc.Load("<root><item key=\"a\">value</item></root>");Construir e guardar XML
Utilização: XmlDocument::Build para construir um documento XML de forma programática, e XmlDocument::SaveToUtf8 para serializá-lo de volta a uma cadeia UTF-8:
XmlDocument doc;
// Build the document structure
auto xml = doc.SaveToUtf8();Atravessando elementos
XmlElement fornece acesso leve baseado em manopla para valores de elementos, filhos e atributos. Elementos construídos por padrão retornam IsNull() == true, que pode ser utilizado como um seguro zero-check:
XmlElement root = doc.GetRootElement();
if (!root.IsNull()) {
// Traverse children via GetAttributes
auto attrs = root.GetAttributes();
}Trabalhar com atributos
XmlAttribute fornece acesso a pares de nome e valor de atributo em um elemento. Use XmlAttribute::MakeAttribute(name, value) para criar novos atributos:
XmlAttribute attr = XmlAttribute::MakeAttribute("key", "value");
bool isNull = attr.IsNull();Mapeadores XML internos
A biblioteca usa classes de mapeadores dedicadas para converter objetos do modelo de planilha em memória para e a partir de suas representações XML. Estes são internos à camada de serialização:
| Classe Mapper | Responsabilidade |
|---|---|
WorkbookXmlMapper | Leia e escreve a parte de relação do livro de trabalho |
WorksheetXmlMapper | Leia e escreve partes de XML da planilha individual |
StylesheetXmlMapper | Leia e escreve a parte de estilos. |
SharedStringTableXmlMapper | Leia e escreve a tabela de cadeias compartilhadas. |
Cada mapeador expõe Read e a) Write Estes métodos são chamados internamente de “metodos” (em inglês: methods). XlsxWorkbookSerializer e não são destinados a utilização directa no código de aplicação.
Tratamento de erros
Erros de análise XML lançar XmlParsingException.Obter esta exceção ao carregar XML não confiável ou malformado:
try {
doc.Load(xmlContent);
} catch (const XmlParsingException& ex) {
// Handle parse error
}Dicas e melhores práticas
- Verificação
XmlElement::IsNull()antes de aceder aos dados do elemento os elementos em caminhos faltantes retornam um controle nulo. - Utilização:
XmlDocument::SaveToUtf8()para obter uma sequência serializada para depuração ou registro de estado XML intermediário. - Não instanciar classes de mapeadores (
WorkbookXmlMapper,WorksheetXmlMapper, etc.) diretamente no código de aplicação utilizaçãoWorkbook::Savee a)Workbook(filePath)Em vez disso. XmlParsingExceptioné lançado em XML malformado; sempre envolva cargas de XML externas num bloco try/catch.
Problemas comuns
| Emissão | Causa da morte | Correção |
|---|---|---|
IsNull() retorna true | Elemento não encontrado no caminho esperado | Verificar a estrutura XML antes de percorrer o sistema . |
XmlParsingException em carga | XML malformado ou não UTF-8 | Validar o XML de entrada antes de passar para Load |
| A saída do mapeador difere da entrada | Mudança do modelo antes de salvar | Certificar-se de que todas as alterações no modelo são cometidas antes da chamada. Save |
Resumo de referência da API
| Classe/Método | Descrição: |
|---|---|
XmlDocument::Load(content) | Analisar uma cadeia XML |
XmlDocument::Build() | Construir um documento de forma programática |
XmlDocument::SaveToUtf8() | Serializar o documento para uma cadeia de caracteres UTF-8 . |
XmlElement::IsNull() | Verifique se o controle do elemento é válido . |
XmlElement::GetValue() | Obter o conteúdo de texto do elemento |
XmlElement::GetAttributes() | Obter a coleção de atributos |
XmlAttribute::IsNull() | Verifique se o controle de atributo é válido . |
XmlAttribute::MakeAttribute(name, value) | Criar um novo controle de atributos |
XmlParsingException | Lançado em entrada XML malformada |
WorksheetXmlMapper | Folha de trabalho interna XML leitura/escrita |
WorkbookXmlMapper | Livro de trabalho interno XML leitura/escrita |