Com treballar amb el processament XML a .NET

Com treballar amb el processament XML a .NET

Els fitxers XLSX emmagatzemen les seves dades en parts XML dins d’un paquet OPC ZIP. Aspose.Cells FOSS per a .NET processa aquests a través de quatre classes de mapatge XML: WorkbookXmlMapper, WorksheetXmlMapper, SharedStringTableXmlMapper i StylesheetXmlMapper. Entendre aquestes classes us ajuda a diagnosticar fallades d’anàlisi i a configurar correctament la càrrega tolerant a errors. Instal·leu amb dotnet add package Aspose.Cells_FOSS.

Guia pas a pas

Pas 1: Instal·la el paquet

dotnet add package Aspose.Cells_FOSS

Pas 2: Importa l’espai de noms

using Aspose.Cells_FOSS;

Pas 3: Entendre les responsabilitats del mapejador XML

Cada mapejador gestiona una part XML de l’estructura XLSX:

MapadorPart XMLGestiona
WorkbookXmlMapperxl/workbook.xmlMetadades del llibre de treball, llista de fulls, noms definits
WorksheetXmlMapperxl/worksheets/sheetN.xmlDades de cel·la, fórmules, enllaços, validacions, formats condicionals
SharedStringTableXmlMapperxl/sharedStrings.xmlValors de cadena desduplicats
StylesheetXmlMapperxl/styles.xmlEstils de cel·la, tipografies, emplenaments, vores

Aquests mappers s’invoquen automàticament durant la construcció de Workbook i Save(). No els instantiate directament al codi de l’aplicació.


Pas 4: Gestiona XmlParsingException

XmlParsingException es llança quan un mapper troba XML mal format que no es pot reparar. Activeu TryRepairXml = true a LoadOptions per activar el camí d’anàlisi tolerant a errors del mapper.

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

Pas 5: Utilitzeu LoadDiagnostics per identificar problemes XML

Després d’una càrrega exitosa, comproveu LoadDiagnostics.Issues per a registres DiagnosticEntry per entendre quines reparacions XML s’han aplicat i si alguna ha provocat pèrdua de dades.

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

Problemes comuns i solucions

XmlParsingException fins i tot amb TryRepairXml = true.
El XML està tan mal format que l’analitzador tolerant a errors no pot recuperar‑lo. Això pot passar amb fitxers creats per eines no estàndard que produeixen XML sintàcticament invàlid. No hi ha cap camí de recuperació per a aquests fitxers.

Els estils falten després de la càrrega. El StylesheetXmlMapper pot haver trobat un xl/styles.xml corrupte. Comproveu LoadDiagnostics.Issues per a entrades amb codi relacionat amb estils, i DataLossRisk = true per a cel·les afectades.

Les cadenes compartides apareixen com a cel·les buides. Un xl/sharedStrings.xml corrupte pot fer que les cel·les que fan referència a la taula de cadenes compartides es mostrin buides. Activeu TryRepairXml per intentar la recuperació.

Preguntes freqüents

Puc implementar un mapper XML personalitzat?

No. Les classes XML mapper són infraestructura interna segellada i no estan dissenyades per a l’extensió.

Per què el SharedStringTableXmlMapper està separat?

L’especificació OOXML separa els valors de cadena repetits en una taula de cadenes compartides per reduir la mida del fitxer. El mapper gestiona la lectura i l’escriptura d’aquesta taula independentment de les dades de les cel·les.

¿ TryRepairXml arregla tots els problemes d’anàlisi XML?

TryRepairXml gestiona errors recuperables com ara elements no tancats, espais de noms que falten i valors d’atribut truncats. XML estructuralment vàlid però semànticament inconsistent (p. ex. tokens de fórmula que fan referència a cel·les inexistents) encara s’analitzarà sense error.

Vegeu també

 Català