Робота з обробкою XML
Робота з обробкою XML
Aspose.Cells FOSS for C++ uses a lightweight internal XML layer to read and write the Open XML parts that make up an XLSX file. The XmlDocument, XmlElement, і XmlAttribute класи становлять ядро цього шару.
Завантаження XML-документу
Використання XmlDocument::Load для аналізу XML-струн або файлу в дереві документів у пам’яті:
#include "aspose/cells_foss/XmlDocument.h"
using namespace Aspose::Cells_FOSS;
// Load from string content
XmlDocument doc;
doc.Load("<root><item key=\"a\">value</item></root>");Створення та збереження XML
Використання XmlDocument::Build для програмного побудови документа XML, і XmlDocument::SaveToUtf8 для серіалізації назад до UTF-8-струнки:
XmlDocument doc;
// Build the document structure
auto xml = doc.SaveToUtf8();Перехід через елементи
XmlElement забезпечує легкий доступ до елементів, дітей та атрибутів. Попередньо створені елементи повертаються. IsNull() == true, який може бути використаний як безпечний нуль-проверка:
XmlElement root = doc.GetRootElement();
if (!root.IsNull()) {
// Traverse children via GetAttributes
auto attrs = root.GetAttributes();
}Робота з атрибутами
XmlAttribute надає доступ до пар імен та значень атрибутів на елементі. Use XmlAttribute::MakeAttribute(name, value) для створення нових атрибутів:
XmlAttribute attr = XmlAttribute::MakeAttribute("key", "value");
bool isNull = attr.IsNull();Внутрішні XML-мапері
Бібліотека використовує спеціальні класи маперів для перетворення об’єктів моделі табличного листа в пам’яті на їх представлення XML. Вони є внутрішнім складом серіалізації:
| Клас Mapper | Responsibility |
|---|---|
WorkbookXmlMapper | Читає і пише частину “Спілкування” в робочому книзі. |
WorksheetXmlMapper | Читає і пише окремі частини XML-додатку. |
StylesheetXmlMapper | Читає і пише стилі частини |
SharedStringTableXmlMapper | Читає та записує таблицю спільних струн. |
Кожний мапер показує: Read і Write Ці методи називаються внутрішньо методами: XlsxWorkbookSerializer і не призначені для прямого використання в коді додатків.
Обробка помилок
Помилки аналізу XML throw XmlParsingException.Зафіксуйте цей виняток при завантаженні недовірної або неправильно оформленої XML:
try {
doc.Load(xmlContent);
} catch (const XmlParsingException& ex) {
// Handle parse error
}Поради та найкращі практики
- Check
XmlElement::IsNull()перед доступом до даних елемента елементи на відсутніх шляхах повертають нуль. - Використання
XmlDocument::SaveToUtf8()отримати серіалізований струн для дебагування або реєстрації проміжного стану XML. - Не інстанціювати класи маперів (
WorkbookXmlMapper,WorksheetXmlMapper, і т.д.) безпосередньо в коді заявки використанняWorkbook::SaveіWorkbook(filePath)замість цього. XmlParsingExceptionвикидається на деформаційованому XML; завжди загорнуйте зовнішні завантаження XML в блок try/catch.
Загальні питання
| Issue | Cause | Виправлення |
|---|---|---|
IsNull() повертає true | Елемент не знайдений на очікуваному шляху | Перевірка структури XML перед переходом |
XmlParsingException на завантаженні | Невиправдано оформлений або не UTF-8 XML | Перевірка вхідного XML перед переходом до Load |
| Вихід Mapper відрізняється від входу | Мутація моделі перед збереженням | Переконайтеся, що всі зміни моделі зроблені перед закликом. Save |
Реферат на API
| Клас/метод | Description |
|---|---|
XmlDocument::Load(content) | Розгляд XML-струнки |
XmlDocument::Build() | Створення документа програмно |
XmlDocument::SaveToUtf8() | Серіалізація документу в UTF-8-струнку . |
XmlElement::IsNull() | Перевірка, чи є підручник елемента дійсним. |
XmlElement::GetValue() | Отримати текст елемента |
XmlElement::GetAttributes() | Отримати колекцію атрибутів |
XmlAttribute::IsNull() | Перевірка, чи є атрибутний посібник дійсним. |
XmlAttribute::MakeAttribute(name, value) | Створення нового атрибуту |
XmlParsingException | Викинути на неправильно сформований вхід XML |
WorksheetXmlMapper | Внутрішній лист роботи XML для читання/писання |
WorkbookXmlMapper | Внутрішня робоча книжка XML читання/писання |