Tôi đang làm việc với nhiều đối tượng XElement
để cung cấp một số dữ liệu do người dùng chỉ định cho một số đối tượng trong thư viện của tôi. Tôi đang cố gắng tránh xác định cấu trúc của toàn bộ tệp XML vì thư viện không nên quan tâm toàn bộ XML trông như thế nào miễn là các phần tử cụ thể mà nó cần được cấu trúc đúng.Xác thực lược đồ XML của XElement
Để kết thúc, tôi có 3 tệp XSD
riêng biệt xác định lược đồ cho từng nhu cầu của lớp của tôi, tuy nhiên tôi đang gặp phải một số vấn đề xác thực XElement dựa vào lược đồ. Có vẻ như không phải là một phương pháp để làm điều đó mà không có một workaround.
Từ trang MSDN, phương thức mở rộng XElement.Validate()
dường như được thiết kế để xác thực lại các phần tử con của tệp lớn hơn. Đối số XmlSchemaObject
gây ra sự cố của tôi vì tôi không thể giả định nó sẽ có mặt trong bất kỳ số XElements
nào. Tôi nghĩ rằng tôi có thể giải quyết vấn đề này bằng cách lấy số XmlSchemaElement
từ số XmlSchemaSet
của mình để vượt qua đối số XmlSchemaObject
, nhưng vì XmlSchemaSet
đã xác định mọi thứ, có vẻ lạ khi phải làm điều đó.
Có tùy chọn nào tốt hơn để xác thực XElement
bằng lược đồ mà không cần xác thực toàn bộ số XDocument
không? Hoặc tôi chỉ cần để cho lớp kinh doanh xử lý xác nhận lược đồ trong ứng dụng và để cho thư viện giả định rằng XElement
được tạo đúng cách (tôi coi tùy chọn này, nhưng sở thích cá nhân thích tránh ném ngoại lệ và thay vào đó chỉ để phương thức gọi biết rằng XElement
không hợp lệ qua tham số trả về).
Tôi không biết tại sao tôi không nghĩ đến việc gói mã trong phương thức mở rộng 'XElement.Validate()' của riêng mình. Dường như hợp lý bây giờ bạn nói điều đó. Việc tạo một 'XDocument' là một ý tưởng hay khác đáng lẽ đã xảy ra với tôi (tôi đã dành quá nhiều thời gian để tìm ra cách chuyển đổi nó, và tôi đã bỏ lỡ giải pháp hiển nhiên). Tôi sẽ thử nghiệm với cả hai và xem mà tôi thích. – psubsee2003