Робота з обробкою XML
Робота з обробкою XML
Файли XLSX зберігають свої дані в XML-частках всередині OPC пакету. Aspose.Cells FOSS для .NET висвітлює шар аналізу і серіалізації XML через чотири класи маперів: WorkbookXmlMapper, WorksheetXmlMapper, SharedStringTableXmlMapper, і StylesheetXmlMapper.Кожен мапер реалізує обидва. Read і Write Операції для відповідної частини XML. Це внутрішні інфраструктурні API більшість коду додатків працює повністю через Workbook і Worksheet об’єкти.
Класи XML-мапера
Кожен XML-мапер відповідає за одну частину XLSX структури:
| Mapper | XML-частина | Responsibility |
|---|---|---|
WorkbookXmlMapper | xl/workbook.xml | Метадані на рівні робочого книжка, посилання до листів, визначені імена |
WorksheetXmlMapper | xl/worksheets/sheetN.xml | Подані клітин, формули, гіперзв’язки, умовні формати, валідація даних |
SharedStringTableXmlMapper | xl/sharedStrings.xml | Спільна таблиця струн для дедуплікованих значень стрингів |
StylesheetXmlMapper | xl/styles.xml | Стилі клітин, шрифти, заповнення, межі, формати номерів |
Кожен мапер показує два методи Read і Write покликані завантаженням бібліотеки та збереженнями трубопроводів відповідно.
XmlParsingException (виняток перегляду)
XmlParsingException викидається, коли мапер зустрічає деформацію XML, яку не можна відремонтувати. Вона піднімається до WorkbookLoadException в ієрархії помилок, коли недійсності відбуваються під час аналізу XML.
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)");
}
catch (XmlParsingException ex)
{
Console.WriteLine("XML parse error: " + ex.Message);
}
catch (WorkbookLoadException ex)
{
Console.WriteLine("Load error: " + ex.Message);
}Поради та найкращі практики
- Набір
TryRepairXml = trueвLoadOptionsдля включення шляху аналізу, що не допускає помилок. - Catch
XmlParsingExceptionКрім того,WorkbookLoadExceptionпри обробці файлів з зовнішніх систем, які можуть створювати неформальний XML. - Класи XML-маперів не призначені для інстанціації за допомогою коду додатку вони викликаються автоматично під час:
Workbookбудівництво таSave(). - Якщо вам потрібно оглянути сирий вміст XML для діагностики, витягніть XLSX як ZIP і перевірте відповідні частини XML безпосередньо.
Загальні питання
| Issue | Cause | Виправлення |
|---|---|---|
XmlParsingException на завантаженні | Невиправданий XML в одній з частин XLSX | Набір TryRepairXml = true в LoadOptions |
| Відсутність стилів після поїздки в ту та іншу сторону. | StylesheetXmlMapper не вдалося аналізувати запис стилю за замовленням | Check LoadDiagnostics.Issues для записів щодо ремонту, пов’язаних зі стилем; |
| Спільні ланцюжки, що відсутні в завантаженому файлі | SharedStringTableXmlMapper знайшов пошкоджену таблицю спільних струн | Enable TryRepairXml; перевірте, що оригінальний файл має дійсний код. xl/sharedStrings.xml |
FAQ
Чи можу я реалізувати свій власний XML-мапер?
Класи XML-маперів є закритою внутрішньою інфраструктурою. Запропоновані мапери не підтримуються в поточній поверхні API.
Чому є окрема SharedStringTableXmlMapper?
Спеціфікація OOXML розділяє значення струн у загальну таблицю стрингів (xl/sharedStrings.xmlКартатор самостійно обробляє читання та записання цієї таблиці.
Does TryRepairXml = true Виправити всі проблеми XML?
TryRepairXml Структурно дійсний, але семантично несумісний XML (наприклад, порушені посилання на формулу) все ще може викликати: XmlParsingException.
Реферат на API
| Class | Description |
|---|---|
WorkbookXmlMapper | Читає/пише xl/workbook.xml |
WorksheetXmlMapper | Читає/пише частини XML на лист |
SharedStringTableXmlMapper | Читає/пише xl/sharedStrings.xml |
StylesheetXmlMapper | Читає/пише xl/styles.xml |
XmlParsingException | Нездосконалені помилки аналізу XML |