Tôi có nhiều tệp XHTML lớn được cập nhật theo cách thủ công. Trong giai đoạn xem xét các bản cập nhật, tôi muốn kiểm tra lập trình độ chính xác của các tệp. Tôi hiện đang sử dụng XmlReader, nhưng thời gian được yêu cầu trên CPU trung bình dài hơn tôi dự kiến.Cách nhanh nhất để lập trình kiểm tra tính hợp lý của các tệp XML trong C# là gì?
Các tệp XHTML có kích thước từ 4KB đến 40KB và việc xác minh mất vài giây cho mỗi tệp. Kiểm tra là cần thiết nhưng tôi muốn giữ thời gian càng ngắn càng tốt khi kiểm tra được thực hiện trong khi các tập tin đang được đọc vào bước quá trình tiếp theo.
Có cách nào nhanh hơn để thực hiện kiểm tra định dạng XML đơn giản không? Có thể sử dụng thư viện XML bên ngoài?
tôi có thể xác nhận rằng việc chứng thực "thường xuyên" nội dung dựa trên XML là nhanh như chớp bằng cách sử dụng XmlReader, và như đề xuất các vấn đề dường như có liên quan đến một thực tế là XHTML DTD được đọc mỗi lần một tập tin được xác nhận.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
Lưu ý rằng ngoài các DTD, file .ent (xhtml-lat1.ent, xhtml-symbol.ent, xhtml-special.ent) tương ứng cũng được tải xuống.
Vì bỏ qua DTD hoàn toàn không thực sự là một tùy chọn cho XHTML vì sự hợp thành chặt chẽ được liên kết chặt chẽ với các thực thể HTML được phép (ví dụ: & nbsp; sẽ kịp thời giới thiệu lỗi xác thực khi chúng tôi bỏ qua DTD).
Vấn đề đã được giải quyết bằng cách sử dụng một tùy chỉnh XmlResolver như đề xuất, phối hợp với các địa phương bản (nhúng) của cả DTD và các file thực thể.
Tôi sẽ đăng các giải pháp ở đây một lần tôi dọn dẹp mã
Tôi đang gặp một vấn đề tương tự. Bạn có nhớ gửi giải pháp mã của bạn cho điều này không? – STLDeveloper
@STLDeveloper Tôi đã thực hiện đề xuất trong đoạn mã sau (VB.NET): [ValidateXMLClass.vb] (https://visualqa.codeplex.com/SourceControl/latest#visualQA/ValidateXMLClass.vb). Các tệp .dtd, .ent và .mod được yêu cầu được (cục bộ) được bao gồm dưới dạng tài nguyên được nhúng để xác thực tăng tốc. Mã được gọi là như sau: 'Dim validateFile Là Mới ValidateXMLClass validateFile.fileIn = tgtFile Nếu Not validateFile.wellFormed Then ...' – barry
Cảm ơn bạn đã tạo mã khả dụng sau một thời gian dài đã trôi qua từ câu hỏi ban đầu của bạn. – STLDeveloper