Arbeiten mit XML Processing

Arbeiten mit XML Processing

Arbeiten mit XML Processing

Aspose.Cells FOSS für C++ verwendet eine leichtgewichtige interne XML-Schicht, um die Open XML-Teile zu lesen und zu schreiben, die eine XLSX-Datei bilden. Die Klassen XmlDocument, XmlElement und XmlAttribute bilden den Kern dieser Schicht.


Laden eines XML-Dokuments

Verwenden Sie XmlDocument::Load, um eine XML Zeichenkette oder Datei in den im Speicher befindlichen Dokumentbaum zu parsen:

#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>");

Erstellen und Speichern von XML

Verwenden Sie XmlDocument::Build, um ein XML-Dokument programmgesteuert zu erstellen, und XmlDocument::SaveToUtf8, um es zurück in eine UTF-8-Zeichenkette zu serialisieren:

XmlDocument doc;
// Build the document structure
auto xml = doc.SaveToUtf8();

Durchlaufen von Elementen

XmlElement bietet leichten, handle-basierten Zugriff auf Elementwerte, Kinder und Attribute. Standardkonstrukte Elemente geben IsNull() == true zurück, das als sichere Nullprüfung verwendet werden kann:

XmlElement root = doc.GetRootElement();
if (!root.IsNull()) {
    // Traverse children via GetAttributes
    auto attrs = root.GetAttributes();
}

Arbeiten mit Attributen

XmlAttribute bietet Zugriff auf Attributnamen- und -wertpaare eines Elements. Verwenden Sie XmlAttribute::MakeAttribute(name, value), um neue Attribute zu erstellen:

XmlAttribute attr = XmlAttribute::MakeAttribute("key", "value");
bool isNull = attr.IsNull();

Interne XML Mapper

Die Bibliothek verwendet dedizierte Mapper-Klassen, um In-Memory-Tabellenkalkulations-Modellobjekte in ihre XML-Darstellungen zu konvertieren und umgekehrt. Diese sind intern zur Serialisierungsschicht:

Mapper-KlasseResponsibility
WorkbookXmlMapperLiest und schreibt den Arbeitsmappen-Beziehungsteil
WorksheetXmlMapperLiest und schreibt einzelne Arbeitsblatt XML Teile
StylesheetXmlMapperLiest und schreibt den Styles-Teil
SharedStringTableXmlMapperLiest und schreibt die Shared-Strings-Tabelle

Jeder Mapper stellt die Methoden Read und Write bereit. Diese werden intern von XlsxWorkbookSerializer aufgerufen und sind nicht für die direkte Verwendung im Anwendungscode vorgesehen.


Fehlerbehandlung

XML-Parsing-Fehler werfen XmlParsingException. Fangen Sie diese Ausnahme beim Laden von nicht vertrauenswürdigen oder fehlerhaften XML ab:

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

Tipps und bewährte Verfahren

  • Überprüfen Sie XmlElement::IsNull(), bevor Sie auf Elementdaten zugreifen — Elemente an fehlenden Pfaden geben einen Null-Handle zurück.
  • Verwenden Sie XmlDocument::SaveToUtf8(), um einen serialisierten String für das Debuggen oder das Protokollieren des Zwischenzustands von XML zu erhalten.
  • Instanziieren Sie Mapper-Klassen (WorkbookXmlMapper, WorksheetXmlMapper usw.) nicht direkt im Anwendungscode — verwenden Sie stattdessen Workbook::Save und Workbook(filePath).
  • XmlParsingException wird bei fehlerhaftem XML ausgelöst; wickeln Sie immer externe XML-Ladevorgänge in einen try/catch-Block ein.

Häufige Probleme

ProblemUrsacheKorrektur
IsNull() gibt true zurückElement am erwarteten Pfad nicht gefundenÜberprüfen Sie die Struktur von XML vor der Traversierung
XmlParsingException beim LadenFehlerhaft oder nicht-UTF-8 XMLValidiere das Eingabe-XML, bevor du es an Load weitergibst.
Mapper-Ausgabe unterscheidet sich von der EingabeModellmutation vor dem SpeichernStelle sicher, dass alle Modelländerungen übernommen wurden, bevor Save aufgerufen wird.

API Reference Zusammenfassung

Klasse/MethodeBeschreibung
XmlDocument::Load(content)Parse einen XML-String
XmlDocument::Build()Erstelle ein Dokument programmgesteuert
XmlDocument::SaveToUtf8()Serialisiere das Dokument in einen UTF-8-String
XmlElement::IsNull()Prüfe, ob das Element-Handle gültig ist
XmlElement::GetValue()Rufe den Textinhalt des Elements ab
XmlElement::GetAttributes()Rufen Sie die Attributsammlung ab
XmlAttribute::IsNull()Prüfen, ob das attribute handle gültig ist
XmlAttribute::MakeAttribute(name, value)Erstelle ein neues attribute handle
XmlParsingExceptionWird bei fehlerhafter XML-Eingabe ausgelöst
WorksheetXmlMapperInternes Arbeitsblatt XML Lesen/Schreiben
WorkbookXmlMapperInternes Arbeitsbuch XML lesen/schreiben

Siehe auch

 Deutsch