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_FOSSSteg 2: Importera Namespace
using Aspose.Cells_FOSS;Steg 3: Förstå XML Mapper Ansvar
Varje mapp hanterar en XML-del av XLSX-strukturen:
| Mapper | XML del | Handlar |
|---|---|---|
WorkbookXmlMapper | xl/workbook.xml | Arbetsbokmetadata, lista med ark, definierade namn |
WorksheetXmlMapper | xl/worksheets/sheetN.xml | Celldata, formler, hyperlänkar, valideringar, villkorliga format |
SharedStringTableXmlMapper | xl/sharedStrings.xml | De-duplicerade strängvärden |
StylesheetXmlMapper | xl/styles.xml | Cellstilar, 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.