วิธีการทํางานกับการประมวลผล XML ใน .NET

วิธีการทํางานกับการประมวลผล XML ใน .NET

ไฟล์ XLSX เก็บข้อมูลของพวกเขาในส่วน XML ในแพคเกจ OPC ZIP Aspose.Cells FOSS สําหรับ .NET กระบวนการเหล่านี้ผ่านสี่ชั้น XML mapper: WorkbookXmlMapper, WorksheetXmlMapper, SharedStringTableXmlMapper,และ StylesheetXmlMapper.การเข้าใจคลาสเหล่านี้จะช่วยให้คุณวินิจฉัยความล้มเหลวในการแก้ไขและกําหนดค่าโหลดที่ทนต่อข้อบกพร่องอย่างถูกต้อง ติดตั้งด้วย dotnet add package Aspose.Cells_FOSS.

คู่มือขั้นตอนตามขั้นตอนนี้

ขั้นตอนที่ 1: ติดตั้งแพ็กเกจ

dotnet add package Aspose.Cells_FOSS

ขั้นตอนที่ 2: นําเข้า Namespace

using Aspose.Cells_FOSS;

ขั้นตอนที่ 3: เข้าใจความรับผิดชอบของ XML Mapper

แต่ละเครื่องมือทําแผนภูมิจัดการกับส่วนหนึ่งของโครงสร้าง XML ของ XLSX:

แผนที่ส่วน XMLแฮนด์ลส์
WorkbookXmlMapperxl/workbook.xmlข้อมูลเมตาบอค, รายการแผ่น, ชื่อที่กําหนดไว้
WorksheetXmlMapperxl/worksheets/sheetN.xmlข้อมูลเซลล์สูตรลิงก์ไฮเปอร์ลิงค์การยืนยันรูปแบบเงื่อนไข
SharedStringTableXmlMapperxl/sharedStrings.xmlค่าสี่เหลี่ยมผืนผ้าแบบ duplicate
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: ใช้ LoadDiagnostics เพื่อระบุปัญหา 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 Mapper ที่กําหนดเองได้หรือไม่?

ไม่ Classes XML Mapper เป็นโครงสร้างพื้นฐานภายในที่ปิดผนึกและไม่ได้ออกแบบมาเพื่อขยายได้.

ทําไมจึงเป็น SharedStringTableXmlMapper อะไรคือแยก?

ข้อกําหนด OOXML จะแยกค่า string repeated ไปเป็นตาราง string shared เพื่อลดขนาดไฟล์ การทําแผนภูมิจะจัดการกับการอ่านและเขียนตํารานี้โดยอิสระจากข้อมูลเซลล์.

หมายถึง TryRepairXml แก้ไขปัญหาการแก้ไข XML ทั้งหมด?

TryRepairXml จัดการข้อผิดพลาดที่สามารถกู้คืนได้เช่นองค์ประกอบที่ไม่ปิดตัวแปรชื่อที่หายไปและค่าคุณสมบัติที่ตัดออก XML ที่ถูกต้องทางโครงสร้าง แต่ไม่สอดคล้องกันทางสัญลักษณ์ (เช่น โค้ชสูตรที่อ้างถึงเซลล์ที่ไม่มี) จะยังคงทําการวิเคราะห์โดยไม่ต้องมีข้อบกพร่อง.

นี่

 ภาษาไทย