Как да се работи с XML обработка в .NET

Как да се работи с XML обработка в .NET

XLSX файлове съхраняват своите данни в XML части вътре в пакет OPC ZIP. Aspose.Cells FOSS за .NET обработва тези чрез четири класове на XML папки: WorkbookXmlMapper, WorksheetXmlMapper, SharedStringTableXmlMapperStylesheetXmlMapper.Разбирането на тези класове ви помага да диагностицирате провала в парче и правилно да конфигурирате грешка толерантно зареждане. dotnet add package Aspose.Cells_FOSS.

Стъпка по стъпка ръководство

Стъпка 1: Инсталирайте пакета

dotnet add package Aspose.Cells_FOSS

Стъпка 2: Внос на имената

using Aspose.Cells_FOSS;

Стъпка 3: Разбиране на отговорностите за XML мапиране

Всяка папка обработва една XML част от XLSX структурата:

КартаXML частХендълс
WorkbookXmlMapperxl/workbook.xmlРаботна книга метаданни, списък с листове, дефинирани имена
WorksheetXmlMapperxl/worksheets/sheetN.xmlДанни за клетките, формули, хипервръзки, валидации, усложни формати
SharedStringTableXmlMapperxl/sharedStrings.xmlДе-двойни стойности на ретината
StylesheetXmlMapperxl/styles.xmlСтил на клетката, шрифтове, пълнежи, граници

Тези папки се назовават автоматично по време на Workbook Строителство и Save().Не ги инсталирате директно в кода за кандидатстване.


Стъпка 4: Управление XmlParsingИзключение

XmlParsingException се изхвърля, когато папка среща XML, който не може да бъде поправен. TryRepairXml = true в LoadOptions да активирате папката с толерантна към грешки пътека.

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

Стъпка 5: Използвайте LoadDiagnostics за идентифициране на XML проблеми

След успешно зареждане, проверете LoadDiagnostics.Issues За DiagnosticEntry да разбере кои XML ремонти са били приложени и дали някое е довело до загуба на данни.

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

Общи проблеми и фиксиране

XmlParsingException Дори и с TryRepairXml = true. XML е толкова деформиран, че не може да бъде възстановен от неподходящия парсер. Това може и да се случи с файлове, създадени от нестандартни инструменти, които произвеждат синтактично невалиден XML. Няма начин за възстановително движение за тези файли.

Стиловете изчезват след натоварване. и на StylesheetXmlMapper Може да се срещне с корумпиран човек. xl/styles.xml.Проверете LoadDiagnostics.Issues за вноски с код, свързани със стилове и DataLossRisk = true за засегнатите клетки.

Споделени вериги се появяват като празни клетки. Корумпиран xl/sharedStrings.xml може да доведе до клетки, които се отнасят към споделения ред таблица да изглежда празен. TryRepairXml Опитва се да се възстанови.

Често задавани въпроси

Мога ли да прилагам персонализиран XML папка?

XML класовете са запечатани вътрешна инфраструктура и не са предназначени за разширяване.

Защо е това SharedStringTableXmlMapper Разделени ли сте?

Спецификацията OOXML отделя повтаряните стойности на редове в споделена таблица за редица, за да намали размера на файла.

И да TryRepairXml Решаване на всички XML проблеми?

TryRepairXml обработва възстановяваните грешки като неоткрити елементи, липсващи имена и тренкани атрибутни стойности. Структурно валидна, но семантично несъвместима XML (например формула токен за референтност на не-ексistant клетки) все още ще падне без грешка.

Виж също

 Български