Werken met XML Processing
Werken met XML Processing
Aspose.Cells FOSS voor C++ gebruikt een lichtgewicht interne XML laag om de Open XML onderdelen die een XLSX-bestand vormen te lezen en te schrijven. De XmlDocument, XmlElement en XmlAttribute klassen vormen de kern van deze laag.
Laden van een XML document
Gebruik XmlDocument::Load om een XML string of bestand te parseren naar de in-memory documentboom:
#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>");Opbouwen en opslaan van XML
Gebruik XmlDocument::Build om een XML document programmatisch te construeren, en XmlDocument::SaveToUtf8 om het te serialiseren naar een UTF-8 string:
XmlDocument doc;
// Build the document structure
auto xml = doc.SaveToUtf8();Elementen doorlopen
XmlElement biedt lichtgewicht, op handles gebaseerde toegang tot elementwaarden, kinderen en attributen. Standaard-geconstrueerde elementen retourneren IsNull() == true, die kan worden gebruikt als een veilige null-controle:
XmlElement root = doc.GetRootElement();
if (!root.IsNull()) {
// Traverse children via GetAttributes
auto attrs = root.GetAttributes();
}Werken met attributen
XmlAttribute biedt toegang tot naam-waardeparen van attributen op een element. Gebruik XmlAttribute::MakeAttribute(name, value) om nieuwe attributen aan te maken:
XmlAttribute attr = XmlAttribute::MakeAttribute("key", "value");
bool isNull = attr.IsNull();Interne XML Mappers
De bibliotheek gebruikt speciale mapper-klassen om spreadsheet-modelobjecten in het geheugen te converteren van en naar hun XML-representaties. Deze zijn intern voor de serialisatielaag:
| Mapper-klasse | Responsibility |
|---|---|
WorkbookXmlMapper | Leest en schrijft het werkboekrelatie-deel |
WorksheetXmlMapper | Leest en schrijft individuele werkblad XML onderdelen |
StylesheetXmlMapper | Leest en schrijft het stijlen-deel |
SharedStringTableXmlMapper | Leest en schrijft de gedeelde strings-tabel |
Elke mapper exposeert Read en Write methoden. Deze worden intern aangeroepen door XlsxWorkbookSerializer en zijn niet bedoeld voor direct gebruik in toepassingscode.
Foutafhandeling
XML-parsefouten werpen XmlParsingException. Vang deze uitzondering op bij het laden van onbetrouwbare of misvormde XML:
try {
doc.Load(xmlContent);
} catch (const XmlParsingException& ex) {
// Handle parse error
}Tips en best practices
- Controleer
XmlElement::IsNull()voordat u elementgegevens benadert — elementen op ontbrekende paden geven een null-handle terug. - Gebruik
XmlDocument::SaveToUtf8()om een geserialiseerde string te verkrijgen voor debuggen of het loggen van de tussenliggende XML-status. - Instantieer mapper-klassen (
WorkbookXmlMapper,WorksheetXmlMapper, enz.) niet rechtstreeks in de toepassingscode — gebruik in plaats daarvanWorkbook::SaveenWorkbook(filePath). XmlParsingExceptionwordt gegooid bij een onjuiste XML; wikkel externe XML-loads altijd in een try/catch-blok.
Veelvoorkomende problemen
| Probleem | Oorzaak | Oplossing |
|---|---|---|
IsNull() geeft true terug | Element niet gevonden op het verwachte pad | Controleer XML structuur vóór traverseren |
XmlParsingException bij het laden | Misvormd of niet-UTF-8 XML | Valideer de invoer XML voordat je deze doorgeeft aan Load |
| Mapper-uitvoer verschilt van invoer | Modelmutatie vóór opslaan | Zorg ervoor dat alle modelwijzigingen zijn gecommit voordat je Save aanroept |
API Reference Samenvatting
| Klasse/Methode | Beschrijving |
|---|---|
XmlDocument::Load(content) | Parse een XML string |
XmlDocument::Build() | Construeer een document programmatisch |
XmlDocument::SaveToUtf8() | Serialiseer het document naar een UTF-8 string |
XmlElement::IsNull() | Controleer of de element handle geldig is |
XmlElement::GetValue() | Haal de tekstinhoud van het element op |
XmlElement::GetAttributes() | Haalt de attribuutcollectie op |
XmlAttribute::IsNull() | Controleer of de attribute handle geldig is |
XmlAttribute::MakeAttribute(name, value) | Maak een nieuwe attribute handle aan |
XmlParsingException | Wordt gegooid bij misvormde XML invoer |
WorksheetXmlMapper | Intern werkblad XML lezen/schrijven |
WorkbookXmlMapper | Intern werkboek XML lezen/schrijven |