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

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

فایل‌های XLSX داده‌های خود را در بخش‌های XML داخل یک بسته OPC ذخیره می‌کنند. Aspose.Cells نرم‌افزار متن باز برای .NET لایهٔ تجزیه و سریال‌سازی XML را از طریق چهار کلاس مپر: WorkbookXmlMapper، WorksheetXmlMapper، SharedStringTableXmlMapper و StylesheetXmlMapper ارائه می‌دهد. هر مپر هر دو عملیات Read و Write را برای بخش مربوط به XML خود پیاده‌سازی می‌کند. این‌ها API‌های زیرساخت داخلی هستند — بیشتر کدهای برنامه‌ای کاملاً از طریق اشیاء Workbook و Worksheet کار می‌کنند.


کلاس‌های مپر XML

هر مپر XML مسئول یک بخش XML از ساختار XLSX است:

MapperXML بخشResponsibility
WorkbookXmlMapperxl/workbook.xmlمتادیتا سطح کتاب‌کار، ارجاع‌های شیت، نام‌های تعریف‌شده
WorksheetXmlMapperxl/worksheets/sheetN.xmlداده‌های سلول، فرمول‌ها، پیوندها، قالب‌های شرطی، اعتبارسنجی داده
SharedStringTableXmlMapperxl/sharedStrings.xmlجدول رشته‌های مشترک برای مقادیر رشته‌ای حذف تکراری
StylesheetXmlMapperxl/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 تنظیم کنید تا مسیر تجزیه‌گر مقاوم به خطا فعال شود.
  • در هنگام کار با فایل‌های سیستم‌های خارجی که ممکن است XML نامعتبر تولید کنند، علاوه بر WorkbookLoadException، XmlParsingException را نیز بگیرید.
  • کلاس‌های مپپر XML برای ساختن توسط کد برنامه‌نویسی در نظر گرفته نشده‌اند — آن‌ها به‌صورت خودکار در طول ساخت Workbook و Save() فراخوانی می‌شوند.
  • اگر برای عیب‌یابی نیاز به بررسی محتوای خام XML دارید، فایل XLSX را به‌عنوان ZIP استخراج کنید و بخش‌های مربوط به XML را به‌طور مستقیم بررسی کنید.

مشکلات متداول

مشکلدلیلراه‌حل
XmlParsingException هنگام بارگذاریXML نامعتبر در یکی از بخش‌های XLSXمقدار TryRepairXml = true را در LoadOptions تنظیم کنید
سبک‌ها پس از round-trip موجود نیستندStylesheetXmlMapper نتوانست رکورد سبک سفارشی را تجزیه کندLoadDiagnostics.Issues را برای ورودی‌های تعمیر مرتبط با سبک بررسی کنید
رشته‌های به‌اشتراک‌گذاری‌شده در پرونده بارگذاری‌شده موجود نیستندSharedStringTableXmlMapper با جدول رشته‌های به‌اشتراک‌گذاری‌شده خراب مواجه شدTryRepairXml را فعال کنید؛ اطمینان حاصل کنید که فایل اصلی دارای xl/sharedStrings.xml معتبر است

FAQ

آیا می‌توانم مپپر XML خودم را پیاده‌سازی کنم؟

کلاس‌های مپر XML زیرساخت داخلی بسته‌ای هستند. مپرهای سفارشی در سطح API فعلی پشتیبانی نمی‌شوند.

چرا یک SharedStringTableXmlMapper جداگانه وجود دارد؟

مشخصات OOXML مقادیر رشته‌ای را به یک جدول رشته‌های مشترک (xl/sharedStrings.xml) تقسیم می‌کند تا رشته‌های تکراری در سراسر کتاب‌کار حذف تکرار شوند. مپر خواندن و نوشتن این جدول را به صورت مستقل مدیریت می‌کند.

آیا TryRepairXml = true تمام مشکلات XML را رفع می‌کند؟

TryRepairXml مشکلات قابل بازیابی مانند عناصر بازنشده، فضای‌نام‌های گمشده و مقادیر قطع‌شده را مدیریت می‌کند. XML هایی که از نظر ساختاری معتبر هستند اما از نظر معنایی ناسازگار (مثلاً ارجاعات فرمول خراب) ممکن است هنوز باعث XmlParsingException شوند.


API Reference خلاصه

کلاسشرح
WorkbookXmlMapperxl/workbook.xml را می‌خواند/می‌نویسد
WorksheetXmlMapperخواندن/نوشتن برای هر شیت XML قطعات
SharedStringTableXmlMapperخواندن/نوشتن xl/sharedStrings.xml
StylesheetXmlMapperخواندن/نوشتن xl/styles.xml
XmlParsingExceptionدر خطاهای تجزیه XML غیرقابل بازیابی پرتاب می‌شود

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

 فارسی