Cara Bekerja dengan Pemrosesan XML di .NET
File XLSX menyimpan data mereka dalam bagian XML di dalam paket OPC ZIP. Aspose.Cells FOSS untuk .NET memprosesnya melalui empat kelas pemetaan XML: WorkbookXmlMapper, WorksheetXmlMapper, SharedStringTableXmlMapper, dan StylesheetXmlMapper. Memahami kelas‑kelas ini membantu Anda mendiagnosis kegagalan parsing dan mengonfigurasi pemuatan toleran kesalahan dengan benar. Instal dengan dotnet add package Aspose.Cells_FOSS.
Panduan Langkah-demi-Langkah
Langkah 1: Instal Paket
dotnet add package Aspose.Cells_FOSSLangkah 2: Impor Namespace
using Aspose.Cells_FOSS;Langkah 3: Memahami Tanggung Jawab XML Mapper
Setiap mapper menangani satu bagian XML dari struktur XLSX:
| Mapper | XML Part | Handles |
|---|---|---|
WorkbookXmlMapper | xl/workbook.xml | Metadata buku kerja, daftar lembar, nama yang didefinisikan |
WorksheetXmlMapper | xl/worksheets/sheetN.xml | Data sel, formula, hyperlink, validasi, format bersyarat |
SharedStringTableXmlMapper | xl/sharedStrings.xml | Nilai string yang di-de-duplicate |
StylesheetXmlMapper | xl/styles.xml | Gaya sel, font, isi, batas |
Mapper ini dipanggil secara otomatis selama konstruksi Workbook dan Save(). Anda tidak menginstansiasi mereka secara langsung dalam kode aplikasi.
Langkah 4: Tangani XmlParsingException
XmlParsingException dilempar ketika mapper menemukan XML yang tidak terbentuk dengan benar dan tidak dapat diperbaiki. Aktifkan TryRepairXml = true di LoadOptions untuk mengaktifkan jalur parsing toleran kesalahan mapper.
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);
}Langkah 5: Gunakan LoadDiagnostics untuk Mengidentifikasi Masalah XML
Setelah pemuatan berhasil, periksa LoadDiagnostics.Issues untuk catatan DiagnosticEntry guna memahami perbaikan XML apa yang diterapkan dan apakah ada yang mengakibatkan kehilangan data.
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}");
}Masalah Umum dan Solusi
XmlParsingException bahkan dengan TryRepairXml = true.
XML begitu rusak sehingga parser toleran kesalahan tidak dapat memulihkannya. Ini dapat terjadi pada file yang dibuat oleh alat non‑standar yang menghasilkan XML yang tidak valid secara sintaksis. Tidak ada jalur pemulihan untuk file‑file ini.
Gaya tidak muncul setelah dimuat.
StylesheetXmlMapper mungkin telah mengalami xl/styles.xml yang rusak. Periksa LoadDiagnostics.Issues untuk entri dengan kode yang terkait dengan gaya, dan DataLossRisk = true untuk sel yang terpengaruh.
String bersama muncul sebagai sel kosong.
Sebuah xl/sharedStrings.xml yang rusak dapat menyebabkan sel yang merujuk ke tabel string bersama ditampilkan sebagai kosong. Aktifkan TryRepairXml untuk mencoba pemulihan.
Pertanyaan yang Sering Diajukan
Bisakah saya mengimplementasikan pemetaan XML khusus?
Tidak. Kelas pemetaan XML adalah infrastruktur internal yang disegel dan tidak dirancang untuk ekstensi.
Mengapa SharedStringTableXmlMapper terpisah?
Spesifikasi OOXML memisahkan nilai string yang berulang ke dalam tabel string bersama untuk mengurangi ukuran file. Mapper menangani pembacaan dan penulisan tabel ini secara independen dari data sel.
Apakah TryRepairXml memperbaiki semua masalah parsing XML?
TryRepairXml menangani kesalahan yang dapat dipulihkan seperti elemen yang tidak ditutup, namespace yang hilang, dan nilai atribut yang terpotong. XML yang secara struktural valid tetapi tidak konsisten secara semantik (misalnya token formula yang merujuk ke sel yang tidak ada) tetap akan diparse tanpa error.