.NET'de XML İşleme ile Çalışma Nasıl Yapılır
XLSX dosyaları verilerini bir OPC ZIP paketi içinde XML parçalarında depolamaktadır. Aspose.Cells .NET bu bilgileri dört XML mapper sınıfı aracılığıyla işler: WorkbookXmlMapper, WorksheetXmlMapper, SharedStringTableXmlMapper,ve StylesheetXmlMapper.Bu sınıfları anlamak, analiz başarısızlıklarını teşhis etmenize ve yanlış yükleyici yüklemeyi doğru bir şekilde yapılandırmanıza yardımcı olur. dotnet add package Aspose.Cells_FOSS.
Adım adım rehberlik
Adım 1: Paketi Kurun
dotnet add package Aspose.Cells_FOSSAdım 2: Namespace İndir
using Aspose.Cells_FOSS;3. Adım: XML Mapper Sorumluluklarını Anlamak
Her bir kartlama makinesi XLSX yapısının bir XML parçasıyla çalışır:
| Haritayı | XML Bölümleri | Handles Hakkında |
|---|---|---|
WorkbookXmlMapper | xl/workbook.xml | İş kitabı metadata, sayfa listesi, tanımlanmış isimler |
WorksheetXmlMapper | xl/worksheets/sheetN.xml | Hücre verileri, formülleri, hyperlinks, validasyonları, koşullu formatlar |
SharedStringTableXmlMapper | xl/sharedStrings.xml | De-Duplicated String değerleri |
StylesheetXmlMapper | xl/styles.xml | Hücre stilleri, fontlar, doldurular ve sınırları |
Bu kartlar otomatik olarak arama sırasında Workbook İnşaat ve Save().Uygulama kodunda doğrudan bunları istanbulda kullanmazsınız.
Adım 4: XmlParsingException kullanın
XmlParsingException Bir kartlama yazılımı düzeltilemeyecek hatalı XML ile karşılaştığında atılır. TryRepairXml = true in içinde LoadOptions Haritayı harekete geçiren hataya toleranslı bir yol açmak için.
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);
}Adım 5: XML sorunlarını tanımlamak için LoadDiagnostics kullanın
Başarılı bir testten sonra, kontrol edin LoadDiagnostics.Issues için DiagnosticEntry XML’in hangi onarımları uygulandığını ve herhangi birinin veri kaybına neden olup olmadığını anlamak için kayıtlar.
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}");
}Yaygın Sorunlar ve Çözümler
XmlParsingException Hatta birlikte TryRepairXml = true. XML, hataya karşı dayanıklı analizörün onu kurtaramayacağı kadar kötü biçimde şekillendirilmiştir.Bu, sözde geçersiz XML üreten standart dışı araçlar tarafından oluşturulan dosyalarda olabilir.
Yükleme sonrası stil eksikliği. OYUN StylesheetXmlMapper Belki bir yolsuzlukla karşılaşmışsınızdır. xl/styles.xml.kontrol et LoadDiagnostics.Issues Stillerle ilgili kodlu girişler için ve DataLossRisk = true etkilenen hücreler için.
Paylaşılan diziler boş hücreler olarak görünür. Yolsuzluk xl/sharedStrings.xml Paylaşılan satır tablosunu referanslayan hücreleri boş olarak göstermeye neden olabilir. TryRepairXml Geri dönüşüm denemesi yapılır.
Sık Sorulan Sorular
XML Mapper kullanabilir miyim?
XML mapper sınıfları kapalı iç altyapı ve uzantılı olarak tasarlanmamıştır.
Neden bu SharedStringTableXmlMapper Ayrılık mı ?
OOXML özellikleri, tekrarlanan satır değerlerini bir dosya boyutunu azaltmak için paylaşılan bir satırı tablosuna ayırır.
yapıyor TryRepairXml XML sorunu çözmek için neler yapmalıyız?
TryRepairXml Kapalı olmayan elementler, eksik isim alanları ve kısaltılmış atribüt değerleri gibi kurtarılabilir hataları ele alır. Yapısal olarak geçerli ancak semantik açıdan uyumsuz XML (örneğin var olmayan hücrelere referanslı formül tokenleri) hala hata olmadan analiz eder.