Hogyan dolgozzunk XML feldolgozással .NET-ben
XLSX fájlok az adatokat XML részekben tárolják egy OPC ZIP csomagban. Aspose.Cells FOSS for .NET ezeket négy XML leképező osztályon keresztül dolgozza fel: WorkbookXmlMapper, WorksheetXmlMapper, SharedStringTableXmlMapper, és StylesheetXmlMapper. Ezen osztályok megértése segít a feldolgozási hibák diagnosztizálásában és a hibamentes betöltés helyes konfigurálásában. Telepítés dotnet add package Aspose.Cells_FOSS.
Lépésről‑lépésre útmutató
1. lépés: A csomag telepítése
dotnet add package Aspose.Cells_FOSS2. lépés: Névterület importálása
using Aspose.Cells_FOSS;3. lépés: Az XML Mapper felelősségeinek megértése
Minden leképező egy XML részt kezel az XLSX struktúrában:
| Leképező | XML rész | Kezeli |
|---|---|---|
WorkbookXmlMapper | xl/workbook.xml | Munkafüzet metaadatai, munkalista, definiált nevek |
WorksheetXmlMapper | xl/worksheets/sheetN.xml | Cellák adatai, képletek, hiperhivatkozások, ellenőrzések, feltételes formázások |
SharedStringTableXmlMapper | xl/sharedStrings.xml | Duplikációtól megtisztított karakterlánc értékek |
StylesheetXmlMapper | xl/styles.xml | Cellastílusok, betűtípusok, kitöltések, szegélyek |
Ezek a leképezők automatikusan meghívódnak a Workbook felépítése és a Save() során. Nem példányosítja őket közvetlenül az alkalmazáskódban.
4. lépés: XmlParsingException kezelése
XmlParsingException akkor dobódik, amikor egy mapper hibás XML-t talál, amelyet nem lehet javítani. Engedélyezze a TryRepairXml = true‑t a LoadOptions‑ben, hogy aktiválja a mapper fault‑tolerant elemzési útvonalát.
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);
}5. lépés: Használja a LoadDiagnostics‑t az XML‑problémák azonosításához
Sikeres betöltés után ellenőrizze a LoadDiagnostics.Issues-t a DiagnosticEntry rekordoknál, hogy megértse, mely XML-javítások kerültek alkalmazásra, és történt-e adatvesztés.
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}");
}Általános problémák és megoldások
XmlParsingException még TryRepairXml = true esetén.
Az XML annyira hibás, hogy a hibatűrő elemző nem tudja helyreállítani. Ez előfordulhat nem szabványos eszközök által létrehozott fájloknál, amelyek szintaktikailag érvénytelen XML-t állítanak elő. Ezekhez a fájlokhoz nincs helyreállítási út.
Stílusok hiányoznak a betöltés után.
A StylesheetXmlMapper esetleg hibás xl/styles.xml-t talált. Ellenőrizze a LoadDiagnostics.Issues-t a stílusokhoz kapcsolódó kóddal rendelkező bejegyzésekért, és a DataLossRisk = true-t az érintett cellákért.
A megosztott karakterláncok üres cellaként jelennek meg.
Egy sérült xl/sharedStrings.xml okozhatja, hogy a megosztott karakterlánc táblára hivatkozó cellák üresen jelennek meg. Engedélyezze a TryRepairXml‑t a helyreállítás megkísérléséhez.
Gyakran Ismételt Kérdések
Létrehozhatok egy egyedi XML mapper-t?
Nem. Az XML mapper osztályok lezárt belső infrastruktúra, és nem lettek kiterjesztésre tervezve.
Miért van a SharedStringTableXmlMapper külön?
Az OOXML specifikáció a többször előforduló karakterlánc értékeket egy megosztott karakterlánc táblába helyezi, hogy csökkentse a fájlméretet. A mapper önállóan kezeli a tábla olvasását és írását a cellaadatoktól.
Javítja a TryRepairXml minden XML-feldolgozási problémát?
TryRepairXml kezeli a helyrehozható hibákat, mint például a be nem zárt elemek, hiányzó névterek és a csonkolt attribútumértékek. A szerkezetileg érvényes, de szemantikai szempontból ellentmondásos XML (például olyan képlet-tokenek, amelyek nem létező cellákra hivatkoznak) továbbra is hibamentesen lesz feldolgozva.