Работа с обработкой XML
Работа с обработкой XML
Файлы XLSX хранят свои данные в XML-частьях внутри пакета OPC. Aspose.Cells FOSS для .NET раскрывает слой анализа и сериализации XML через четыре класса маперов: WorkbookXmlMapper, WorksheetXmlMapper, SharedStringTableXmlMapper, и StylesheetXmlMapper.Каждый картографист реализует оба . Read и в том числе: Write Это внутренние инфраструктурные API большинство приложений работает полностью через Workbook и в том числе: Worksheet предметы.
Класы XML-маперов
Каждый XML-маппер отвечает за одну часть XLSX:
| Картографист | Часть XML | Ответственность |
|---|---|---|
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чтобы включить ошибочно-терпимый путь анализа картера. - Поймать.
XmlParsingExceptionкроме:WorkbookLoadExceptionпри обработке файлов из внешних систем, которые могут создавать неформализованный XML. - Класы XML-маппера не предназначены для инстанцирования с помощью кода приложения они вызываются автоматически во время
Workbookстроительство иSave(). - Если вам нужно проверить сырой XML-контент для диагностики, извлечь XLSX в качестве ZIP и изучить соответствующие части XML напрямую.
Общие проблемы
| Выпуск | Причина . | Устранить |
|---|---|---|
XmlParsingException нагруженный | Неправильно оформленный XML в одной из частей XLSX | Набор TryRepairXml = true в . LoadOptions |
| Недостаток стилей после поездки в обратном направлении. | StylesheetXmlMapper не удалось проанализировать заказ стиля записи | Проверка . LoadDiagnostics.Issues для стилевых ремонтных записей. |
| Общие строки отсутствуют в загруженном файле | SharedStringTableXmlMapper столкнулся с испорченной совместной таблицей струн | Включить TryRepairXml; проверять , что оригинальный файл имеет действительный xl/sharedStrings.xml |
FAQ
Могу ли я реализовать свой собственный XML-картер?
Класы XML-маперов являются запечатанной внутренней инфраструктурой. Карты настраиваемых файлов не поддерживаются в текущей поверхности API.
Почему есть отдельный SharedStringTableXmlMapper?
Спецификация OOXML разделяет значения строк в общую таблицу струн (xl/sharedStrings.xmlКартографист обрабатывает чтение и запись этой таблицы независимо.
- Да , да . TryRepairXml = true - Решить все проблемы XML?
TryRepairXml обрабатывает восстанавливаемые проблемы, такие как незакрытые элементы, отсутствующие пространства имен и отрезанные значения. Структурно действительный, но семантически непоследовательный XML (например, нарушенные ссылки на формулу) все еще может вызвать XmlParsingException.
Справочное резюме API
| Класс | Описание: |
|---|---|
WorkbookXmlMapper | Читает/пишет xl/workbook.xml |
WorksheetXmlMapper | Читает/пишет части XML на лист. |
SharedStringTableXmlMapper | Читает/пишет xl/sharedStrings.xml |
StylesheetXmlMapper | Читает/пишет xl/styles.xml |
XmlParsingException | Невозможно восстановить ошибки анализа XML . |