Hur man arbetar med XML-behandling i .NET

Hur man arbetar med XML-behandling i .NET

XLSX-filer lagrar sina data i XML-delar inom ett OPC ZIP-paket. Aspose.Cells FOSS för .NET behandlar dessa genom fyra klasser av XML: WorkbookXmlMapper, WorksheetXmlMapper, SharedStringTableXmlMapper,och StylesheetXmlMapper.Förstå dessa klasser hjälper dig att diagnostisera parsingfel och korrekt konfigurera feltolerant laddning. dotnet add package Aspose.Cells_FOSS.

Steg för steg guide

Steg 1: Installera paketet

dotnet add package Aspose.Cells_FOSS

Steg 2: Importera Namespace

using Aspose.Cells_FOSS;

Steg 3: Förstå XML Mapper Ansvar

Varje mapp hanterar en XML-del av XLSX-strukturen:

MapperXML delHandlar
WorkbookXmlMapperxl/workbook.xmlArbetsbokmetadata, lista med ark, definierade namn
WorksheetXmlMapperxl/worksheets/sheetN.xmlCelldata, formler, hyperlänkar, valideringar, villkorliga format
SharedStringTableXmlMapperxl/sharedStrings.xmlDe-duplicerade strängvärden
StylesheetXmlMapperxl/styles.xmlCellstilar, fonts, fyllningar, gränser

Dessa mappar inbjuds automatiskt under Workbook Byggandet och Save().Du installerar dem inte direkt i ansökningskod.


Steg 4: Handla XmlParsingUtanför

XmlParsingException kastas när en mappa möter felformad XML som inte kan repareras. TryRepairXml = true i LoadOptions för att aktivera mapparens feltoleranta parsingvägar.

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

Steg 5: Använd LoadDiagnostics för att identifiera XML-problem

Efter en lyckad laddning, kontrollera LoadDiagnostics.Issues för DiagnosticEntry Uppgifter för att förstå vilka XML-reparationer som tillämpas och om någon resulterade i dataförlust.

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

Vanliga problem och fixar

XmlParsingException Även med TryRepairXml = true. XML är så missformad att feltolerant parser inte kan återställa det. Detta kan hända med filer som skapats av icke-standardverktyg som producerar syntaxiskt invalid XML. Det finns ingen återhämtningsvägen för dessa filar.

Stilar saknas efter last. Den StylesheetXmlMapper Kanske har du träffat en korrupt xl/styles.xml.- Kontrollera LoadDiagnostics.Issues för inmatningar med kod relaterade till stilar, och DataLossRisk = true för de drabbade cellerna.

Delade strängar visas som tomma celler. En korrupt xl/sharedStrings.xml kan orsaka celler som refererar till den delade radtabellen att göra det tomt. TryRepairXml För att försöka återhämta sig.

Ofta ställda frågor

Kan jag implementera en anpassad XML-mapp?

XML-mappklasser är inre infrastrukturer och är inte utformade för förlängning.

Varför är det den SharedStringTableXmlMapper separerade ?

OOXML-specifikationen separerar upprepade strängvärden i en delad strängen tabell för att minska filstorleken. mappen hanterar läsning och skrivande av denna tabella oberoende av cellerna data.

Gör det TryRepairXml Får du lösa alla XML-parsingproblem?

TryRepairXml hanterar återställbara fel som oklara element, saknade namnutrymmen och trunkade attributvärden. Strukturellt giltiga men semantiskt oförenliga XML (t.ex. formel tokens refererar till icke-existenta celler) kommer fortfarande att sprida utan fel.

Se även

 Svenska