کار با پردازش XML

کار با پردازش 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 آنها استفاده می‌کند. این‌ها داخلی لایهٔ سریال‌سازی هستند:

کلاس MapperResponsibility
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 خواندن/نوشتن

همچنین ببینید:

 فارسی