Hvordan man arbejder med XML-behandling i .NET

Hvordan man arbejder med XML-behandling i .NET

XLSX-filer gemmer deres data i XML dele inde i en OPC ZIP pakke. Aspose.Cells FOSS for .NET behandler disse gennem fire XML mapper klasser: WorkbookXmlMapper, WorksheetXmlMapper, SharedStringTableXmlMapper, og StylesheetXmlMapper.Forståelsen af disse klasser hjælper dig med at diagnosticere fejl i analysen og konfigurere fejletolerant indlæsning korrekt. Installer med dotnet add package Aspose.Cells_FOSS.

Trin-for-trin vejledning

Trin 1: Installer pakken

dotnet add package Aspose.Cells_FOSS

Trin 2: Import af navneområdet

using Aspose.Cells_FOSS;

Trin 3: Forstå XML Mapper-ansvaret

Hver mapper håndterer en XML-del af XLSX-strukturen:

KartografXML-delHåndtagere
WorkbookXmlMapperxl/workbook.xmlArbejdsbogen metadata, arkliste, definerede navne
WorksheetXmlMapperxl/worksheets/sheetN.xmlCelledata, formler, hyperlinks, valideringer, betingede formater
SharedStringTableXmlMapperxl/sharedStrings.xmlDe-duplikerede strengeværdier
StylesheetXmlMapperxl/styles.xmlCellstiler, skrifttyper, fyldninger og grænser

Disse kortlægere opfordres automatisk under Workbook bygge- og anlægsvirksomhed Save().Man instancierer dem ikke direkte i applikationskoden.


Trin 4: håndtering af XmlParsingException

XmlParsingException er kastet, når en mapper støder på fejlformet XML, der ikke kan repareres. Aktiverer TryRepairXml = true i den LoadOptions til at aktivere mapperens fejl-tolerante parseringsvej.

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

Trin 5: Brug LoadDiagnostics til at identificere XML-problemer

Efter en vellykket indlæsning skal du kontrollere, at der er et system til kontrol. LoadDiagnostics.Issues for: DiagnosticEntry data, der skal forstå hvilke XML-reparationer der er blevet anvendt og om nogen har resulteret i tab af data.

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

Almindelige problemer og løsninger

XmlParsingException selv med TryRepairXml = true. XML er så fejlagtigt, at fejl-tolerante parser ikke kan gendanne det. Dette kan ske med filer skabt af ikke-standardværktøjer, der producerer syntaktiske ugyldig XML. Der findes ingen genoprettelsesvej for disse filer.

Styles mangler efter lastning. Den Europæiske Union StylesheetXmlMapper kan have mødt en korrupt xl/styles.xml.- Jeg tjekker. LoadDiagnostics.Issues for poster med koder vedrørende stilarter og DataLossRisk = true for de berørte celler.

Delte strenge vises som tomme celler. En korrupt. xl/sharedStrings.xml kan få celler, der henviser til den delte string-tabel, til at blive vist som tomme. Aktiverer TryRepairXml at forsøge genopretning.

Ofte stillede spørgsmål

Kan jeg implementere en brugerdefineret XML-mapper?

Nej. XML-mapperklasserne er forseglede interne infrastrukturer og er ikke beregnet til udvidelse.

Hvorfor er det ikke? SharedStringTableXmlMapper - Separat?

OOXML-specifikationen adskiller gentagne strengeværdier i en delt stringtabell for at reducere filstørrelsen. Mapper håndterer læsning og skrivning af denne tabel uafhængigt af celledata.

- Ja. Det gør det. TryRepairXml - Forklar alle XML-parseringsproblemer?

TryRepairXml håndterer gendannelsesmulige fejl som ikke-lukkede elementer, manglende navneområder og afkortede attributværdier. Strukturelt gyldigt men semantisk inkonsekvent XML (fx formel tokens med henvisning til ikke eksisterende celler) vil stadig analyseres uden fejl.

Se også:

 Dansk