کار با پردازش XML
کار با پردازش XML
Aspose.Cells FOSS برای C++ از لایه داخلی سبک وزن XML برای خواندن و نوشتن بخشهای Open XML که یک فایل XLSX را تشکیل میدهند استفاده میکند. کلاسهای 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 را برمیگردانند که میتوان از آن بهعنوان بررسی ایمن null استفاده کرد:
XmlElement root = doc.GetRootElement();
if (!root.IsNull()) {
// Traverse children via GetAttributes
auto attrs = root.GetAttributes();
}کار با ویژگیها
XmlAttribute دسترسی به جفتهای نام و مقدار ویژگی بر روی یک عنصر را فراهم میکند. برای ایجاد ویژگیهای جدید از 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، XmlParsingException را پرتاب میکنند. هنگام بارگذاری XMLهای نامطمئن یا خراب، این استثنا را دریافت کنید:
try {
doc.Load(xmlContent);
} catch (const XmlParsingException& ex) {
// Handle parse error
}نکات و بهترین شیوهها
- قبل از دسترسی به دادههای عنصر،
XmlElement::IsNull()را بررسی کنید — عناصری که مسیرشان موجود نیست، یک هندل null برمیگردانند. - از
XmlDocument::SaveToUtf8()برای دریافت یک رشته سریالشده جهت اشکالزدایی یا ثبت وضعیت میانی XML استفاده کنید. - کلاسهای مپر (
WorkbookXmlMapper،WorksheetXmlMapperو غیره) را مستقیماً در کد برنامه نمونهسازی نکنید — بهجای آن ازWorkbook::SaveوWorkbook(filePath)استفاده کنید. XmlParsingExceptionهنگام XML خراب پرتاب میشود؛ همیشه بارگذاریهای خارجی XML را در یک بلوک try/catch بپیچید.
مشکلات رایج
| مسئله | دلیل | رفع |
|---|---|---|
IsNull() مقدار true را برمیگرداند | عنصر در مسیر مورد انتظار یافت نشد | ساختار XML را پیش از پیمایش تأیید کنید |
XmlParsingException هنگام بارگذاری | بد شکل یا غیر UTF-8 XML | قبل از ارسال به Load، ورودی XML را اعتبارسنجی کنید |
| خروجی Mapper متفاوت از ورودی است | دگرگونی مدل قبل از ذخیره | اطمینان حاصل کنید که تمام تغییرات مدل قبل از فراخوانی Save کامیت شدهاند |
خلاصه API Reference
| کلاس/متد | توضیح |
|---|---|
XmlDocument::Load(content) | یک رشته XML را تجزیه کنید |
XmlDocument::Build() | یک سند را بهصورت برنامهنویسی ایجاد کنید |
XmlDocument::SaveToUtf8() | سند را به یک رشته UTF-8 سریالسازی کنید |
XmlElement::IsNull() | بررسی کنید که آیا دستگیره عنصر معتبر است |
XmlElement::GetValue() | متن محتوای عنصر را دریافت کنید |
XmlElement::GetAttributes() | دریافت مجموعه ویژگیها |
XmlAttribute::IsNull() | بررسی کنید که آیا دستگیره ویژگی معتبر است |
XmlAttribute::MakeAttribute(name, value) | یک handle ویژگی جدید ایجاد کنید |
XmlParsingException | در صورت ورودی XML نادرست، پرتاب میشود |
WorksheetXmlMapper | ورق کاری داخلی XML خواندن/نوشتن |
WorkbookXmlMapper | دفتر کار داخلی XML خواندن/نوشتن |