Wie man mit XML-Verarbeitung in .NET arbeitet

Wie man mit XML-Verarbeitung in .NET arbeitet

XLSX-Dateien speichern ihre Daten in XML-Teilen innerhalb eines OPC ZIP-Pakets. Aspose.Cells FOSS für .NET verarbeitet diese durch vier XML Mapperklassen: WorkbookXmlMapper, WorksheetXmlMapper, SharedStringTableXmlMapper,und . StylesheetXmlMapper.Das Verständnis dieser Klassen hilft Ihnen, Fehler bei der Analyse zu diagnostizieren und das fehlertolerante Laden korrekt einzurichten. Installieren Sie mit dotnet add package Aspose.Cells_FOSS.

Schritt für Schritte

Schritt 1: Installieren des Pakets

dotnet add package Aspose.Cells_FOSS

Schritt 2: Importieren des Namensraums

using Aspose.Cells_FOSS;

Schritt 3: Verstehen der XML-Mapper-Verantwortlichkeiten

Jeder Mapper behandelt einen XML-Teil der XLSX-Struktur:

KartenrechnerXML-TeilHandgriffe
WorkbookXmlMapperxl/workbook.xmlArbeitsbücher-Metadaten, Liste der Blätter und definierte Namen
WorksheetXmlMapperxl/worksheets/sheetN.xmlZelldaten, Formeln, Hyperlinks, Validierungen und bedingte Formate
SharedStringTableXmlMapperxl/sharedStrings.xmlDe-duplizierte Zeichenfolgewerte
StylesheetXmlMapperxl/styles.xmlZellstile, Schriften, Füllungen und Randschnitte

Diese Mapper werden während der Workbook Bau und Save().Sie instanzieren sie nicht direkt in Anwendungscode.


Schritt 4: XmlParsingException verwalten

XmlParsingException wird geworfen, wenn ein Mapper auf fehlerhafte XML trifft, die nicht repariert werden kann. Aktivieren TryRepairXml = true in der LoadOptions Um den fehlertoleranten Parsing-Pfad des Mappers zu aktivieren.

using Aspose.Cells_FOSS;

var opts = new LoadOptions
{
    TryRepairPackage = true,
    TryRepairXml = true,
};

try
{
    var wb = new Workbook("malformed.xlsx", opts);
    Console.WriteLine("Loaded: " + wb.Worksheets.Count + " sheet(s)");

    var diag = wb.LoadDiagnostics;
    if (diag.HasRepairs)
        Console.WriteLine("XML repairs applied. Data loss risk: " + diag.HasDataLossRisk);
}
catch (XmlParsingException ex)
{
    Console.WriteLine("Unrecoverable XML error: " + ex.Message);
}
catch (WorkbookLoadException ex)
{
    Console.WriteLine("Load failed: " + ex.Message);
}

Schritt 5: LoadDiagnostics verwenden, um XML-Probleme zu identifizieren

Nach erfolgreicher Ladung überprüfen Sie die LoadDiagnostics.Issues für die DiagnosticEntry Aufzeichnungen, um zu verstehen, welche XML-Reparaturen durchgeführt wurden und ob Datenverluste entstanden sind.

using Aspose.Cells_FOSS;

var opts = new LoadOptions { TryRepairXml = true };
var wb = new Workbook("file.xlsx", opts);
var diag = wb.LoadDiagnostics;

foreach (var entry in diag.Issues)
{
    Console.WriteLine($"[{entry.Severity}] {entry.Code}");
    Console.WriteLine($"  Message: {entry.Message}");
    Console.WriteLine($"  RepairApplied: {entry.RepairApplied}  DataLossRisk: {entry.DataLossRisk}");
}

Häufige Probleme und Lösungen

XmlParsingException auch mit TryRepairXml = true. Das XML ist so fehlerhaft, dass der Fehler-Toleranz-Parser es nicht wiederherstellen kann. Dies kann bei Dateien geschehen, die von Nichtstandardwerkzeugen erstellt wurden und syntaktisch ungültiges XML produzieren. Es gibt keinen Wiederherstellungsweg für diese Daten.

Styles fehlen nach der Ladung. Die StylesheetXmlMapper Sie haben vielleicht einen korrupten xl/styles.xml.- Die Scheckkarte . LoadDiagnostics.Issues für Eingaben mit Code, die sich auf Stile beziehen; und DataLossRisk = true für betroffene Zellen.

Geteilte Zeichenketten erscheinen als leere Zellen. Ein korrupter … xl/sharedStrings.xml kann dazu führen, dass Zellen, die auf die geteilte String-Tabelle verweisen, als leer dargestellt werden. Aktivieren TryRepairXml Erholung zu versuchen.

Häufig gestellte Fragen

Kann ich einen benutzerdefinierten XML-Mapper implementieren?

Nein. Die XML-Mapperklassen sind versiegelte interne Infrastrukturen und nicht für die Erweiterung konzipiert.

Warum ist die SharedStringTableXmlMapper - Trennend?

Die OOXML-Spezifikation trennt wiederholte Zeichenfolgewerte in eine gemeinsame Zeichenfolgentabelle, um die Dateigröße zu reduzieren. Der Mapper verarbeitet das Lesen und Schreiben dieser Tabelle unabhängig von Zelldaten.

Ist es so ? TryRepairXml alle XML-Parsingprobleme beheben?

TryRepairXml verarbeitet wiederherstellbare Fehler wie nicht geschlossene Elemente, fehlende Namensräume und abgeschnittenen Attributwerte. Strukturell gültiges aber semantisch inkonsistentes XML (z. B. Formel-Token mit Bezug auf nicht vorhandene Zellen) wird immer noch ohne Fehler analysiert.

Siehe auch:

 Deutsch