Cara Bekerja dengan Pemprosesan XML dalam .NET

Cara Bekerja dengan Pemprosesan XML dalam .NET

Fail XLSX menyimpan data mereka dalam bahagian XML di dalam pakej OPC ZIP. Aspose.Cells FOSS untuk .NET memproses ini melalui empat kelas pemeta XML: WorkbookXmlMapper, WorksheetXmlMapper, SharedStringTableXmlMapper, dan StylesheetXmlMapper. Memahami kelas‑kelas ini membantu anda mendiagnosis kegagalan penguraian dan mengkonfigurasi pemuatan toleran kesalahan dengan betul. Pasang dengan dotnet add package Aspose.Cells_FOSS.

Panduan Langkah demi Langkah

Langkah 1: Pasang Pakej

dotnet add package Aspose.Cells_FOSS

Langkah 2: Import Ruang Nama

using Aspose.Cells_FOSS;

Langkah 3: Fahami Tanggungjawab XML Mapper

Setiap pemeta mengendalikan satu bahagian XML struktur XLSX:

PemetaBahagian XMLMengendalikan
WorkbookXmlMapperxl/workbook.xmlMetadata buku kerja, senarai lembaran, nama yang ditakrifkan
WorksheetXmlMapperxl/worksheets/sheetN.xmlData sel, formula, pautan hiperteks, pengesahan, format bersyarat
SharedStringTableXmlMapperxl/sharedStrings.xmlNilai rentetan yang tidak duplikat
StylesheetXmlMapperxl/styles.xmlGaya sel, fon, isian, sempadan

Mapper ini dipanggil secara automatik semasa pembinaan Workbook dan Save(). Anda tidak menginstansiasikannya secara langsung dalam kod aplikasi.


Langkah 4: Tangani XmlParsingException

XmlParsingException dilemparkan apabila pemeta menemui XML yang rosak dan tidak dapat dibaiki. Aktifkan TryRepairXml = true dalam LoadOptions untuk mengaktifkan laluan penguraian toleran kesalahan pemeta.

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 Mengenal Pasti Isu XML

Selepas muatan berjaya, periksa LoadDiagnostics.Issues untuk rekod DiagnosticEntry untuk memahami pembaikan XML yang telah diterapkan dan sama ada 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}");
}

Isu Umum dan Penyelesaian

XmlParsingException walaupun dengan TryRepairXml = true.
XML begitu rosak sehingga pengurai toleran-kesalahan tidak dapat memulihkannya. Ini boleh berlaku dengan fail yang dibuat oleh alat bukan piawai yang menghasilkan XML yang tidak sah secara sintaks. Tiada laluan pemulihan untuk fail‑fail ini.

Gaya tidak muncul selepas dimuatkan.
StylesheetXmlMapper mungkin telah mengalami xl/styles.xml yang rosak. Periksa LoadDiagnostics.Issues untuk entri dengan kod yang berkaitan dengan gaya, dan DataLossRisk = true untuk sel yang terjejas.

Rentetan yang dikongsi muncul sebagai sel kosong.
Sebuah xl/sharedStrings.xml yang rosak boleh menyebabkan sel yang merujuk jadual rentetan yang dikongsi dipaparkan sebagai kosong. Aktifkan TryRepairXml untuk mencuba pemulihan.

Soalan Lazim

Bolehkah saya melaksanakan pemeta XML tersuai?

Tidak. Kelas pemetaan XML adalah infrastruktur dalaman yang tersegel dan tidak direka untuk peluasan.

Mengapa SharedStringTableXmlMapper berasingan?

Spesifikasi OOXML memisahkan nilai rentetan yang berulang ke dalam jadual rentetan bersama untuk mengurangkan saiz fail. Mapper mengendalikan pembacaan dan penulisan jadual ini secara bebas daripada data sel.

Adakah TryRepairXml memperbaiki semua isu penguraian XML?

TryRepairXml mengendalikan ralat yang boleh dipulihkan seperti elemen yang tidak ditutup, ruang nama yang hilang, dan nilai atribut yang terpotong. XML yang sah secara struktur tetapi tidak konsisten secara semantik (contohnya token formula yang merujuk kepada sel yang tidak wujud) masih akan diparse tanpa ralat.

Lihat Juga

 Bahasa Melayu