.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 भाग | हस्तक्षेप |
|---|---|---|
WorkbookXmlMapper | xl/workbook.xml | कार्यपुस्तिका मेटाडेटा, शीट सूची, परिभाषित नाम |
WorksheetXmlMapper | xl/worksheets/sheetN.xml | सेल डेटा, सूत्र, हाइपरलिंक, वैधताएं, शर्त प्रारूप |
SharedStringTableXmlMapper | xl/sharedStrings.xml | डी-डुप्लिकेट स्ट्रिंग मूल्य |
StylesheetXmlMapper | xl/styles.xml | सेल शैलियों, फ़ॉन्ट्स, भरें, सीमाएं |
इन दस्तावेजों को स्वचालित रूप से संबोधित किया जाता है। Workbook निर्माण और Save().आप उन्हें सीधे आवेदन कोड में स्थापित नहीं करते हैं।.
चरण 4: XmlParsing का उपयोग करेंअनुवाद
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.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 (उदाहरण के लिए, फॉर्मूला tokens जो अस्तित्वहीन कोशिकाओं को संदर्भित करते हैं) अभी भी बिना किसी त्रुटियों के पेरिस होगा.