Kako raditi sa XML obradom u .NET-u

Kako raditi sa XML obradom u .NET-u

XLSX fajlovi čuvaju svoje podatke u XML delovima unutar OPC ZIP paketa. Aspose.Cells FOSS za .NET obrađuje ih kroz četiri XML mapper klase: WorkbookXmlMapper, WorksheetXmlMapper, SharedStringTableXmlMapper, i StylesheetXmlMapper. Razumevanje ovih klasa pomaže vam da dijagnostikujete greške pri parsiranju i pravilno konfigurišete otporno učitavanje. Instalirajte pomoću dotnet add package Aspose.Cells_FOSS.

Vodič korak po korak

Korak 1: Instalirajte paket

dotnet add package Aspose.Cells_FOSS

Korak 2: Uvezi prostor imena

using Aspose.Cells_FOSS;

Korak 3: Razumevanje odgovornosti XML mapera

Svaki mapper obrađuje jedan XML deo strukture XLSX:

MapperXML PartHandles
WorkbookXmlMapperxl/workbook.xmlMetapodaci radne sveske, lista listova, definisana imena
WorksheetXmlMapperxl/worksheets/sheetN.xmlPodaci ćelija, formule, hiperveze, validacije, uslovni formati
SharedStringTableXmlMapperxl/sharedStrings.xmlUklonjene duplikate string vrednosti
StylesheetXmlMapperxl/styles.xmlStilovi ćelija, fontovi, popunjavanja, ivice

Ovi maperi se automatski pozivaju tokom izgradnje Workbook i Save(). Ne instancirate ih direktno u kodu aplikacije.


Korak 4: Obradi XmlParsingException

XmlParsingException se baca kada mapper naiđe na oštećen XML koji se ne može popraviti. Omogućite TryRepairXml = true u LoadOptions da aktivirate put parsiranja otporan na greške mapper‑a.

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);
}

Korak 5: Koristite LoadDiagnostics za identifikaciju XML problema

Nakon uspešnog učitavanja, proverite LoadDiagnostics.Issues za DiagnosticEntry zapise da biste razumeli koje su XML popravke primenjene i da li je neka od njih dovela do gubitka podataka.

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}");
}

Česti problemi i rešenja

XmlParsingException čak i sa TryRepairXml = true.
XML je toliko loše oblikovan da parser otporan na greške ne može da ga oporavi. Ovo se može desiti sa fajlovima kreiranim od strane nestandardnih alata koji proizvode sintaksno neispravan XML. Ne postoji put oporavka za ove fajlove.

Stilovi nedostaju nakon učitavanja. StylesheetXmlMapper možda je naišao na oštećeni xl/styles.xml. Proverite LoadDiagnostics.Issues za unose sa kodom koji se odnosi na stilove, i DataLossRisk = true za pogođene ćelije.

Deljeni stringovi se pojavljuju kao prazne ćelije.
Oštećen xl/sharedStrings.xml može uzrokovati da ćelije koje referišu na tabelu deljenih stringova budu prikazane kao prazne. Omogućite TryRepairXml da pokušate oporavak.

Često postavljana pitanja

Mogu li da implementiram prilagođeni XML mapper?

Ne. XML mapper klase su zatvorena interna infrastruktura i nisu dizajnirane za proširenje.

Zašto je SharedStringTableXmlMapper odvojen?

OOXML specifikacija razdvaja ponovljene string vrednosti u shared string table kako bi smanjila veličinu fajla. Mapper obrađuje čitanje i pisanje ove tabele nezavisno od cell data.

Da li TryRepairXml rešava sve XML probleme parsiranja?

TryRepairXml obrađuje greške koje je moguće oporaviti, kao što su nezatvoreni elementi, nedostajući prostori imena i skraćene vrednosti atributa. Strukturno validan, ali semantički nekonzistentan XML (npr. tokeni formule koji referišu na nepostojeće ćelije) i dalje će se parsirati bez greške.

Види такође

 Српски