Lavorare con XML Processing
Lavorare con l’elaborazione di XML
Aspose.Cells FOSS per C++ utilizza un leggero livello interno XML per leggere e scrivere le parti Open XML che compongono un file XLSX. Le classi XmlDocument, XmlElement e XmlAttribute costituiscono il nucleo di questo livello.
Caricamento di un documento XML
Usa XmlDocument::Load per analizzare una stringa o un file XML nell’albero del documento in memoria:
#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>");Creazione e salvataggio di XML
Usa XmlDocument::Build per costruire programmaticamente un documento XML, e XmlDocument::SaveToUtf8 per serializzarlo nuovamente in una stringa UTF-8:
XmlDocument doc;
// Build the document structure
auto xml = doc.SaveToUtf8();Scorrere gli elementi
XmlElement fornisce un accesso leggero basato su handle ai valori degli elementi, ai figli e agli attributi. Gli elementi costruiti di default restituiscono IsNull() == true, che può essere usato come un controllo null sicuro:
XmlElement root = doc.GetRootElement();
if (!root.IsNull()) {
// Traverse children via GetAttributes
auto attrs = root.GetAttributes();
}Lavorare con gli attributi
XmlAttribute fornisce l’accesso alle coppie nome e valore degli attributi su un elemento. Usa XmlAttribute::MakeAttribute(name, value) per creare nuovi attributi:
XmlAttribute attr = XmlAttribute::MakeAttribute("key", "value");
bool isNull = attr.IsNull();Mapper interni XML
La libreria utilizza classi mapper dedicate per convertire gli oggetti modello del foglio di calcolo in memoria da e verso le loro rappresentazioni XML. Queste sono interne al livello di serializzazione:
| Classe Mapper | Responsibility |
|---|---|
WorkbookXmlMapper | Legge e scrive la parte delle relazioni della cartella di lavoro |
WorksheetXmlMapper | Legge e scrive le singole parti XML del foglio di lavoro |
StylesheetXmlMapper | Legge e scrive la parte degli stili |
SharedStringTableXmlMapper | Legge e scrive la tabella delle stringhe condivise |
Ogni mapper espone i metodi Read e Write. Questi vengono chiamati internamente da XlsxWorkbookSerializer e non sono destinati all’uso diretto nel codice dell’applicazione.
Gestione degli errori
Gli errori di parsing XML lanciano XmlParsingException. Cattura questa eccezione quando carichi XML non attendibili o malformati:
try {
doc.Load(xmlContent);
} catch (const XmlParsingException& ex) {
// Handle parse error
}Suggerimenti e migliori pratiche
- Verifica
XmlElement::IsNull()prima di accedere ai dati dell’elemento — gli elementi nei percorsi mancanti restituiscono un handle nullo. - Usa
XmlDocument::SaveToUtf8()per ottenere una stringa serializzata per il debug o la registrazione dello stato intermedio di XML. - Non istanziare le classi mapper (
WorkbookXmlMapper,WorksheetXmlMapper, ecc.) direttamente nel codice dell’applicazione — usaWorkbook::SaveeWorkbook(filePath)invece. XmlParsingExceptionviene sollevato su XML malformato; avvolgi sempre i caricamenti esterni di XML in un blocco try/catch.
Problemi comuni
| Problema | Cause | Correzione |
|---|---|---|
IsNull() restituisce true | Elemento non trovato nel percorso previsto | Verifica la struttura di XML prima dell’attraversamento |
XmlParsingException al caricamento | Malformato o non-UTF-8 XML | Convalida l’input XML prima di passarlo a Load |
| L’output del mapper differisce dall’input | Mutazione del modello prima del salvataggio | Assicurati che tutte le modifiche al modello siano confermate prima di chiamare Save |
Riepilogo API Reference
| Classe/Metodo | Descrizione |
|---|---|
XmlDocument::Load(content) | Analizza una stringa XML |
XmlDocument::Build() | Costruisci un documento programmaticamente |
XmlDocument::SaveToUtf8() | Serializza il documento in una stringa UTF-8 |
XmlElement::IsNull() | Verifica se l’handle dell’elemento è valido |
XmlElement::GetValue() | Ottieni il contenuto testuale dell’elemento |
XmlElement::GetAttributes() | Ottieni la raccolta di attributi |
XmlAttribute::IsNull() | Verifica se l’handle dell’attributo è valido |
XmlAttribute::MakeAttribute(name, value) | Crea un nuovo handle dell’attributo |
XmlParsingException | Generato su input XML malformato |
WorksheetXmlMapper | Worksheet interno XML lettura/scrittura |
WorkbookXmlMapper | Workbook interno XML lettura/scrittura |