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-Klasse | Responsibility |
|---|---|
WorkbookXmlMapper | Liest und schreibt den Arbeitsmappen-Beziehungsteil |
WorksheetXmlMapper | Liest und schreibt einzelne Arbeitsblatt XML Teile |
StylesheetXmlMapper | Liest und schreibt den Styles-Teil |
SharedStringTableXmlMapper | Liest 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,WorksheetXmlMapperusw.) nicht direkt im Anwendungscode — verwenden Sie stattdessenWorkbook::SaveundWorkbook(filePath). XmlParsingExceptionwird bei fehlerhaftem XML ausgelöst; wickeln Sie immer externe XML-Ladevorgänge in einen try/catch-Block ein.
Häufige Probleme
| Problem | Ursache | Korrektur |
|---|---|---|
IsNull() gibt true zurück | Element am erwarteten Pfad nicht gefunden | Überprüfen Sie die Struktur von XML vor der Traversierung |
XmlParsingException beim Laden | Fehlerhaft oder nicht-UTF-8 XML | Validiere das Eingabe-XML, bevor du es an Load weitergibst. |
| Mapper-Ausgabe unterscheidet sich von der Eingabe | Modellmutation vor dem Speichern | Stelle sicher, dass alle Modelländerungen übernommen wurden, bevor Save aufgerufen wird. |
API Reference Zusammenfassung
| Klasse/Methode | Beschreibung |
|---|---|
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 |
XmlParsingException | Wird bei fehlerhafter XML-Eingabe ausgelöst |
WorksheetXmlMapper | Internes Arbeitsblatt XML Lesen/Schreiben |
WorkbookXmlMapper | Internes Arbeitsbuch XML lesen/schreiben |