Hoe te werken met XML-verwerking in .NET

Hoe te werken met XML-verwerking in .NET

XLSX-bestanden slaan hun gegevens op in XML-onderdelen binnen een OPC ZIP-pakket. Aspose.Cells FOSS voor .NET verwerkt deze via vier XML-mapperklassen: WorkbookXmlMapper, WorksheetXmlMapper, SharedStringTableXmlMapper, en StylesheetXmlMapper. Het begrijpen van deze klassen helpt u bij het diagnosticeren van parsefouten en het correct configureren van fouttolerant laden. Installeer met dotnet add package Aspose.Cells_FOSS.

Stapsgewijze handleiding

Stap 1: Installeer het pakket

dotnet add package Aspose.Cells_FOSS

Stap 2: Importeer de Namespace

using Aspose.Cells_FOSS;

Stap 3: Begrijp de verantwoordelijkheden van de XML Mapper

Elke mapper verwerkt één XML-gedeelte van de XLSX-structuur:

MapperXML-gedeelteBehandelt
WorkbookXmlMapperxl/workbook.xmlWerkboekmetadata, bladlijst, gedefinieerde namen
WorksheetXmlMapperxl/worksheets/sheetN.xmlCelgegevens, formules, hyperlinks, validaties, voorwaardelijke opmaak
SharedStringTableXmlMapperxl/sharedStrings.xmlGededupliceerde tekenreekswaarden
StylesheetXmlMapperxl/styles.xmlCelstijlen, lettertypen, vullingen, randen

Deze mappers worden automatisch aangeroepen tijdens Workbook constructie en Save(). U maakt ze niet direct aan in de toepassingscode.


Stap 4: XmlParsingException afhandelen

XmlParsingException wordt gegooid wanneer een mapper slecht gevormde XML tegenkomt die niet kan worden gerepareerd. Schakel TryRepairXml = true in LoadOptions in om het fouttolerante parsepad van de mapper te activeren.

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

Stap 5: Gebruik LoadDiagnostics om XML‑problemen te identificeren

Na een succesvolle load, controleer LoadDiagnostics.Issues op DiagnosticEntry records om te begrijpen welke XML‑reparaties zijn toegepast en of er enige gegevensverlies is opgetreden.

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

Veelvoorkomende problemen en oplossingen

XmlParsingException even with TryRepairXml = true. De XML is zo misvormd dat de fouttolerante parser deze niet kan herstellen. Dit kan gebeuren met bestanden die zijn gemaakt door niet‑standaard tools die syntactisch ongeldige XML produceren. Er is geen herstelpad voor deze bestanden.

Stijlen ontbreken na het laden. De StylesheetXmlMapper kan een beschadigd xl/styles.xml hebben aangetroffen. Controleer LoadDiagnostics.Issues op items met code gerelateerd aan stijlen, en DataLossRisk = true voor getroffen cellen.

Shared strings appear as empty cells.
Een corrupte xl/sharedStrings.xml kan ervoor zorgen dat cellen die naar de gedeelde tekenreeks‑tabel verwijzen als leeg worden weergegeven. Schakel TryRepairXml in om herstel te proberen.

Veelgestelde vragen

Kan ik een aangepaste XML-mapper implementeren?

Nee. De XML mapper classes zijn sealed internal infrastructure en zijn niet ontworpen voor extensie.

Waarom is de SharedStringTableXmlMapper gescheiden?

De OOXML-specificatie scheidt herhaalde tekenreekswaarden in een shared string table om de bestandsgrootte te verkleinen. De mapper verwerkt het lezen en schrijven van deze tabel onafhankelijk van de celgegevens.

Lost TryRepairXml alle XML-parseproblemen op?

TryRepairXml behandelt herstelbare fouten zoals niet‑gesloten elementen, ontbrekende namespaces en afgekorte attribuutwaarden. Structureel geldige maar semantisch inconsistente XML (bijv. formule‑tokens die verwijzen naar niet‑bestaande cellen) zal nog steeds zonder fout worden geparseerd.

Zie ook

 Nederlands