كيفية العمل مع معالجة XML في .NET
تخزن ملفات XLSX بياناتها في أجزاء XML داخل حزمة OPC ZIP. تقوم Aspose.Cells FOSS for .NET بمعالجة هذه عبر أربع فئات مخطط XML: WorkbookXmlMapper، WorksheetXmlMapper، SharedStringTableXmlMapper، وStylesheetXmlMapper. يساعدك فهم هذه الفئات على تشخيص فشل التحليل وتكوين التحميل المتسامح مع الأخطاء بشكل صحيح. قم بالتثبيت باستخدام dotnet add package Aspose.Cells_FOSS.
دليل خطوة بخطوة
الخطوة 1: تثبيت الحزمة
dotnet add package Aspose.Cells_FOSSالخطوة 2: استيراد مساحة الاسم
using Aspose.Cells_FOSS;الخطوة 3: فهم مسؤوليات محول XML
كل محول يتعامل مع جزء XML واحد من بنية XLSX:
| المحول | جزء XML | يتعامل مع |
|---|---|---|
WorkbookXmlMapper | xl/workbook.xml | بيانات تعريف المصنف، قائمة الأوراق، الأسماء المعرفة |
WorksheetXmlMapper | xl/worksheets/sheetN.xml | بيانات الخلايا، الصيغ، الروابط التشعبية، التحقق، التنسيقات الشرطية |
SharedStringTableXmlMapper | xl/sharedStrings.xml | قيم السلاسل غير المكررة |
StylesheetXmlMapper | xl/styles.xml | أنماط الخلايا، الخطوط، التعبئات، الحدود |
يتم استدعاء هذه المحولات تلقائيًا أثناء بناء Workbook و Save(). لا تقوم بإنشاء مثيل لها مباشرةً في شفرة التطبيق.
الخطوة 4: معالجة XmlParsingException
يتم إلقاء XmlParsingException عندما يواجه المُحوِّل XML غير صالح لا يمكن إصلاحه. فعّل TryRepairXml = true في LoadOptions لتفعيل مسار التحليل المتسامح مع الأخطاء للمُحوِّل.
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)");
var diag = wb.LoadDiagnostics;
if (diag.HasRepairs)
Console.WriteLine("XML repairs applied. Data loss risk: " + diag.HasDataLossRisk);
}
catch (XmlParsingException ex)
{
Console.WriteLine("Unrecoverable XML error: " + ex.Message);
}
catch (WorkbookLoadException ex)
{
Console.WriteLine("Load failed: " + ex.Message);
}الخطوة 5: استخدم LoadDiagnostics لتحديد مشكلات XML
بعد تحميل ناجح، تحقق من LoadDiagnostics.Issues للحصول على سجلات DiagnosticEntry لفهم أي إصلاحات XML تم تطبيقها وما إذا كان أي منها أدى إلى فقدان البيانات.
using Aspose.Cells_FOSS;
var opts = new LoadOptions { TryRepairXml = true };
var wb = new Workbook("file.xlsx", opts);
var diag = wb.LoadDiagnostics;
foreach (var entry in diag.Issues)
{
Console.WriteLine($"[{entry.Severity}] {entry.Code}");
Console.WriteLine($" Message: {entry.Message}");
Console.WriteLine($" RepairApplied: {entry.RepairApplied} DataLossRisk: {entry.DataLossRisk}");
}المشكلات الشائعة والحلول
XmlParsingException حتى مع TryRepairXml = true.
XML مشوه إلى حد أن محلل الأخطاء المتسامح لا يستطيع استعادته. يمكن أن يحدث هذا مع الملفات التي أنشأتها أدوات غير معيارية تنتج XML غير صالح نحويًا. لا توجد طريقة استعادة لهذه الملفات.
الأنماط مفقودة بعد التحميل.
قد يكون StylesheetXmlMapper قد واجه ملفًا xl/styles.xml تالفًا. تحقق من LoadDiagnostics.Issues للعثور على الإدخالات ذات الشيفرة المتعلقة بالأنماط، ومن DataLossRisk = true للخلايا المتأثرة.
السلاسل المشتركة تظهر كخلايا فارغة.
يمكن أن يتسبب xl/sharedStrings.xml الفاسد في جعل الخلايا التي تشير إلى جدول السلاسل المشتركة تظهر كخلايا فارغة. قم بتمكين TryRepairXml لمحاولة الاستعادة.
الأسئلة المتكررة
هل يمكنني تنفيذ محول XML مخصص؟
لا. فئات مخطط XML هي بنية داخلية مختومة ولم تُصمم للتوسيع.
لماذا SharedStringTableXmlMapper منفصل؟
يفصل مواصفة OOXML القيم النصية المتكررة في جدول سلاسل مشتركة لتقليل حجم الملف. يتعامل المُحَوِّل مع قراءة وكتابة هذا الجدول بشكل مستقل عن بيانات الخلايا.
هل TryRepairXml يحل جميع مشكلات تحليل XML؟
TryRepairXml يتعامل مع الأخطاء القابلة للاسترداد مثل العناصر غير المغلقة، وفقدان مساحات الأسماء، وقيم السمات المقتطعة. XML الصالح من الناحية الهيكلية ولكن غير المتسق دلاليًا (مثل رموز الصيغة التي تشير إلى خلايا غير موجودة) سيظل يتم تحليله دون خطأ.