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_FOSSTrin 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:
| Kartograf | XML-del | Håndtagere |
|---|---|---|
WorkbookXmlMapper | xl/workbook.xml | Arbejdsbogen metadata, arkliste, definerede navne |
WorksheetXmlMapper | xl/worksheets/sheetN.xml | Celledata, formler, hyperlinks, valideringer, betingede formater |
SharedStringTableXmlMapper | xl/sharedStrings.xml | De-duplikerede strengeværdier |
StylesheetXmlMapper | xl/styles.xml | Cellstiler, 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.