Cómo trabajar con el procesamiento XML en .NET

Cómo trabajar con el procesamiento XML en .NET

Los archivos XLSX almacenan sus datos en partes XML dentro de un paquete OPC ZIP. Aspose.Cells FOSS para .NET procesa estos a través de cuatro clases de mapeo XML: WorkbookXmlMapper, WorksheetXmlMapper, SharedStringTableXmlMapper y StylesheetXmlMapper. Comprender estas clases le ayuda a diagnosticar fallos de análisis y a configurar correctamente la carga tolerante a fallos. Instale con dotnet add package Aspose.Cells_FOSS.

Guía paso a paso

Paso 1: Instalar el paquete

dotnet add package Aspose.Cells_FOSS

Paso 2: Importar el espacio de nombres

using Aspose.Cells_FOSS;

Paso 3: Comprender las responsabilidades del mapeador XML

Cada mapeador maneja una parte XML de la estructura XLSX:

MapeadorParte XMLManeja
WorkbookXmlMapperxl/workbook.xmlMetadatos del libro de trabajo, lista de hojas, nombres definidos
WorksheetXmlMapperxl/worksheets/sheetN.xmlDatos de celdas, fórmulas, hipervínculos, validaciones, formatos condicionales
SharedStringTableXmlMapperxl/sharedStrings.xmlValores de cadena desduplicados
StylesheetXmlMapperxl/styles.xmlEstilos de celda, fuentes, rellenos, bordes

Estos mapeadores se invocan automáticamente durante la construcción Workbook y Save(). No los instancias directamente en el código de la aplicación.


Paso 4: Manejar XmlParsingException

XmlParsingException se lanza cuando un mapeador encuentra XML malformado que no puede repararse. Habilite TryRepairXml = true en LoadOptions para activar la ruta de análisis tolerante a fallos del mapeador.

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

Paso 5: Utilice LoadDiagnostics para identificar problemas XML

Después de una carga exitosa, verifique LoadDiagnostics.Issues para los registros DiagnosticEntry para entender qué reparaciones XML se aplicaron y si alguna resultó en pérdida de datos.

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

Problemas comunes y soluciones

XmlParsingException incluso con TryRepairXml = true. El XML está tan malformado que el analizador tolerante a fallos no puede recuperarlo. Esto puede ocurrir con archivos creados por herramientas no estándar que producen XML sintácticamente inválido. No hay una ruta de recuperación para estos archivos.

Los estilos faltan después de cargar. El StylesheetXmlMapper puede haber encontrado un xl/styles.xml corrupto. Verifique LoadDiagnostics.Issues para entradas con código relacionado con estilos, y DataLossRisk = true para celdas afectadas.

Las cadenas compartidas aparecen como celdas vacías. Un xl/sharedStrings.xml corrupto puede causar que las celdas que hacen referencia a la tabla de cadenas compartidas se muestren vacías. Habilite TryRepairXml para intentar la recuperación.

Preguntas Frecuentes

¿Puedo implementar un mapeador XML personalizado?

No. Las clases de mapeador XML son infraestructura interna sellada y no están diseñadas para su extensión.

¿Por qué está el SharedStringTableXmlMapper separado?

La especificación OOXML separa los valores de cadena repetidos en una tabla de cadenas compartidas para reducir el tamaño del archivo. El mapeador maneja la lectura y escritura de esta tabla de forma independiente de los datos de la celda.

¿TryRepairXml corrige todos los problemas de análisis XML?

TryRepairXml maneja errores recuperables como elementos no cerrados, espacios de nombres faltantes y valores de atributo truncados. XML estructuralmente válido pero semánticamente inconsistente (p. ej., tokens de fórmula que hacen referencia a celdas inexistentes) seguirá analizando sin error.

Ver también

 Español