Jak pracovat s XML zpracováním v .NET

Jak pracovat s XML zpracováním v .NET

Soubory XLSX ukládají své údaje v částech XML uvnitř balíčku OPC ZIP. Aspose.Cells FOSS pro .NET je zpracovává prostřednictvím čtyř tříd mapování XML: WorkbookXmlMapper, WorksheetXmlMapper, SharedStringTableXmlMapper,a) StylesheetXmlMapper.Pochopení těchto tříd vám pomůže diagnostikovat poruchy analýzy a správně konfigurovat zatížení s odolností vůči chybám. dotnet add package Aspose.Cells_FOSS.

Krok za krokem

Krok 1: Nainstalujte balíček

dotnet add package Aspose.Cells_FOSS

Krok 2: Importovat prostor pro jména

using Aspose.Cells_FOSS;

Krok 3: Pochopit odpovědnost XML Mappera

Každý mapér spravuje jednu XML část XLSX struktury:

MaperČást XMLRukušnice
WorkbookXmlMapperxl/workbook.xmlMetadata pracovního seznamu, seznam listů a definované názvy
WorksheetXmlMapperxl/worksheets/sheetN.xmlÚdaje o buňkách, vzorce, hypertextové odkazy, validace a podmíněné formáty
SharedStringTableXmlMapperxl/sharedStrings.xmlDe-duplikované hodnoty řetězců
StylesheetXmlMapperxl/styles.xmlStylové buňky, písma, vyplnění a hranice

Tyto mapy jsou automaticky volány během: Workbook stavebnictví a Save().Nejsou přímo v aplikačním kódu.


Krok 4: Zpracování XmlParsingException

XmlParsingException je vypuštěn, když mapér narazí na chybně formovaný XML, který nelze opravit. Enable TryRepairXml = true v . LoadOptions Aktivace mapovací cesty.

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

Krok 5: Pomocí diagnostického systému LoadDiagnostics identifikujte problémy v XML-u

Po úspěšném načtení zkontrolujte: LoadDiagnostics.Issues pro: DiagnosticEntry záznamy, které umožňují pochopit, jaké opravy XML byly provedeny a zda některé z nich vedly k ztrátě dat.

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

Obvyklé problémy a řešení

XmlParsingException i s TryRepairXml = true. XML je tak zformovaný, že ho nemůže odkrýt chybotolerantní analyzátor. To se může stát s soubory vytvořenými nestandardními nástroji, které vytvářejí syntaxicky neplatný XML. Pro tyto soubory neexistuje žádná cesta k obnovení.

Po naložení chybí stylové. Úřad pro bezpečnost a ochranu zdraví StylesheetXmlMapper Možná se setkal s nějakým zkaženým. xl/styles.xml.- Ček. LoadDiagnostics.Issues pro údaje s kódem souvisejícím se styly a DataLossRisk = true pro postižené buňky.

Sdílené řetězce se zobrazují jako prázdné buňky. Zkorumpovaný. xl/sharedStrings.xml může způsobit, že buňky odkazující na sdílenou tabulku řetězců budou zobrazeny jako prázdné. Enable TryRepairXml Zkusit se zotavit.

Časté otázky

Můžu implementovat vlastní XML maper?

Ne. Třídy XML mapper jsou uzavřené vnitřní infrastruktury a nejsou určeny k rozšíření.

Proč je to? SharedStringTableXmlMapper Odděleně?

Specifikace OOXML odděluje opakované hodnoty řetězců do sdílené tabulky řety, aby se snížila velikost souboru. Mapper zpracovává čtení a psaní této tabuly nezávisle na datech buněk.

- Ano. TryRepairXml Vyřešit všechny problémy s XML parsingem?

TryRepairXml s ohledem na strukturálně platné, ale semanticky nesouladné XML (např. tokeny vzorce odkazující na neexistující buňky) bude stále analyzovat bez chyb.

Viz také:

 Čeština