Hogyan dolgozzunk XML feldolgozással .NET-ben

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_FOSS

2. 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észKezeli
WorkbookXmlMapperxl/workbook.xmlMunkafüzet metaadatai, munkalista, definiált nevek
WorksheetXmlMapperxl/worksheets/sheetN.xmlCellák adatai, képletek, hiperhivatkozások, ellenőrzések, feltételes formázások
SharedStringTableXmlMapperxl/sharedStrings.xmlDuplikációtól megtisztított karakterlánc értékek
StylesheetXmlMapperxl/styles.xmlCellastí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.

Lásd még

 Magyar