Arbeiten mit XML-Verarbeitung
Arbeiten mit XML-Verarbeitung
XLSX-Dateien speichern ihre Daten in XML-Teilen innerhalb eines OPC-Pakets. Aspose.Cells FOSS für .NET zeigt die XML-Parsing- und Serialisierungsschicht durch vier Mapper-Klassen: WorkbookXmlMapper, WorksheetXmlMapper, SharedStringTableXmlMapper, und StylesheetXmlMapper.Jeder Mapper implementiert beides . Read und Write Diese sind interne Infrastruktur-APIs die meisten Anwendungscode funktioniert vollständig durch die Workbook und Worksheet Gegenstände.
XML-Klassen für die Kartierung
Jeder XML-Mapper ist für einen XML Teil der XLSX-Struktur verantwortlich:
| Kartograph | XML-Teil | Verantwortung |
|---|---|---|
WorkbookXmlMapper | xl/workbook.xml | Metadaten auf Arbeitsbücherebene, Referenzen zu Blättern, definierte Namen |
WorksheetXmlMapper | xl/worksheets/sheetN.xml | Zelldaten, Formeln, Hyperlinks, bedingte Formate, Datenvalidierung |
SharedStringTableXmlMapper | xl/sharedStrings.xml | Gemeinsame Zeichenfolge für entduplizierte Zeichenfolgenwerte |
StylesheetXmlMapper | xl/styles.xml | Zellstile, Schriften, Füllungen, Randformate und Zahlenformat |
Jeder Mapper zeigt zwei Methoden Read und . Write durch die Last der Bibliothek aufgerufen und Pipelines ersparen.
XmlParsingException
XmlParsingException wird geworfen, wenn ein Mapper auf fehlerhafte XML trifft, die nicht repariert werden kann. Es wird vor dem WorkbookLoadException in der Fehlerhierarchie, wenn das Versagen speziell während des XML-Parsing auftritt.
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)");
}
catch (XmlParsingException ex)
{
Console.WriteLine("XML parse error: " + ex.Message);
}
catch (WorkbookLoadException ex)
{
Console.WriteLine("Load error: " + ex.Message);
}Tipps und beste Praktiken
- Setz
TryRepairXml = truein derLoadOptionsUm den fehlertoleranten Parsing-Pfad des Mappers zu aktivieren. - Fang
XmlParsingExceptionZusätzlich zu:WorkbookLoadExceptionbei der Handhabung von Dateien aus externen Systemen, die eine fehlerhafte XML-Formatierung hervorrufen können. - Die XML-Mapperklassen sind nicht dazu gedacht, durch Anwendungscode instanziert zu werden sie werden automatisch während der Anwendung aufgerufen.
WorkbookBau undSave(). - Wenn Sie den Roh-XML-Inhalt für die Diagnostik überprüfen müssen, extrahieren Sie das XLSX als ZIP und untersuchen Sie direkt die relevanten XML-Teile.
Häufige Probleme
| Ausgabe | Ursache | Behebung |
|---|---|---|
XmlParsingException aufgeladen | Fehlformatiertes XML in einem der XLSX-Teile | Setz TryRepairXml = true in der LoadOptions |
| Fehlende Stile nach der Rückfahrt | StylesheetXmlMapper konnte einen benutzerdefinierten Stil-Record nicht analysieren | Überprüfung LoadDiagnostics.Issues für stilbezogene Reparaturenträge |
| Gemeinsame Zeichenketten fehlen in geladener Datei | SharedStringTableXmlMapper auf eine korrupte gemeinsame String-Tabelle gestoßen ist | Aktivieren TryRepairXml;Überprüfen Sie, ob die Originaldatei eine gültige Version hat. xl/sharedStrings.xml |
FAQ
Kann ich meinen eigenen XML-Mapper implementieren?
Die XML-Mapperklassen sind versiegelte interne Infrastrukturen. Custom-Mappers werden in der aktuellen API-Oberfläche nicht unterstützt.
Warum gibt es eine separate SharedStringTableXmlMapper?
Die OOXML-Spezifikation trennt Zeichenkettenwerte in eine gemeinsame Stringtabelle (xl/sharedStrings.xmlDer Mapper verarbeitet das Lesen und Schreiben dieser Tabelle unabhängig voneinander.
Ist es so ? TryRepairXml = true alle XML-Probleme zu beheben?
TryRepairXml verarbeitet wiederherstellbare Probleme wie nicht geschlossene Elemente, fehlende Namensräume und abgeschnittenen Werte. Strukturell gültig aber semantisch inkonsistent XML (z. B. gebrochene Formelverweise) kann immer noch zu XmlParsingException.
Zusammenfassung der API-Referenzen
| Klasse | Beschreibung |
|---|---|
WorkbookXmlMapper | Lesen/Schreiben xl/workbook.xml |
WorksheetXmlMapper | Lesen/Schreiben von XML-Teilen pro Blatt |
SharedStringTableXmlMapper | Lesen/Schreiben xl/sharedStrings.xml |
StylesheetXmlMapper | Lesen/Schreiben xl/styles.xml |
XmlParsingException | Auf unwiederbringliche XML-Parsefehler geworfen |