.NET में XML प्रोसेसिंग के साथ कैसे काम करें

.NET में XML प्रोसेसिंग के साथ कैसे काम करें

XLSX फ़ाइलें अपने डेटा को OPC ZIP पैकेज के भीतर XML भागों में संग्रहीत करती हैं। 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 मैपर की जिम्मेदारियों को समझें

प्रत्येक मैपर XLSX संरचना के एक XML भाग को संभालता है:

मैपरXML भागसंभालता है
WorkbookXmlMapperxl/workbook.xmlवर्कबुक मेटाडेटा, शीट सूची, परिभाषित नाम
WorksheetXmlMapperxl/worksheets/sheetN.xmlसेल डेटा, फ़ॉर्मूले, हाइपरलिंक्स, वैलिडेशन, कंडीशनल फ़ॉर्मैट्स
SharedStringTableXmlMapperxl/sharedStrings.xmlडुप्लिकेशन हटाए गए स्ट्रिंग मान
StylesheetXmlMapperxl/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: XML समस्याओं की पहचान करने के लिए LoadDiagnostics का उपयोग करें

सफल लोड के बाद, 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 mapper classes सील्ड इंटर्नल इन्फ्रास्ट्रक्चर हैं और इन्हें विस्तार के लिए डिज़ाइन नहीं किया गया है।

क्यों है SharedStringTableXmlMapper अलग?

OOXML विनिर्देशन दोहराए गए स्ट्रिंग मानों को फ़ाइल आकार कम करने के लिए shared string table में अलग करता है। mapper इस तालिका को cell data से स्वतंत्र रूप से पढ़ने और लिखने को संभालता है।

क्या TryRepairXml सभी XML पार्सिंग समस्याओं को ठीक करता है?

TryRepairXml अनक्लोज़्ड एलिमेंट्स, गायब नेमस्पेसेस, और ट्रंकेटेड एट्रिब्यूट वैल्यूज़ जैसी पुनर्प्राप्ति योग्य त्रुटियों को संभालता है। संरचनात्मक रूप से वैध लेकिन अर्थगत असंगत XML (जैसे गैर‑मौजूद सेल्स को संदर्भित करने वाले फ़ॉर्मूला टोकन) अभी भी बिना त्रुटि के पार्स हो जाएगा।

संबंधित देखें

 हिन्दी