184
Chương 5: XML
XmlSchemaCollection schemas = new XmlSchemaCollection();
schemas.Add(null, "ProductCatalog.xsd");
validator.Schemas.Add(schemas);
// Nạp và kiểm tra tài liệu cùng một lúc.
try {
doc.Load(validator);
// (Validation thành công.)
}catch (XmlSchemaException err) {
// (Validation thất bại.)
}
9.
9.
S d ng XML Serialization v i các đ i t
ng tùy bi n
ử ụ
ớ
ố ượ
ế
S d ng XML Serialization v i các đ i t
ng tùy bi n
ử ụ
ớ
ố ượ
ế
Bạn cần sử dụng XML như một định dạng tuần tự hóa (serialization format). Tuy
nhiên, bạn không muốn xử lý XML trực tiếp trong mã lệnh, mà muốn tương tác
với dữ liệu bằng các đối tượng tùy biến.
Sử dụng lớp
System.Xml.Serialization.XmlSerializer
để chuyển dữ liệu từ đối
tượng của bạn sang XML, và ngược lại. Bạn cũng có thể đánh dấu mã lệnh của
lớp bằng các đặc tính để tùy biến biểu diễn XML của nó.
Lớp
XmlSerializer
cho phép chuyển các đối tượng thành dữ liệu XML, và ngược lại. Lớp này
đủ thông minh để tạo đúng các mảng khi nó tìm thấy các phần tử lồng bên trong.
Các yêu cầu khi sử dụng
XmlSerializer
:
•
XmlSerializer
chỉ tuần tự hóa các thuộc tính và các biến công khai.
•
Các lớp cần tuần tự hóa phải chứa một phương thức khởi dựng mặc định không có đối
số.
XmlSerializer
sẽ sử dụng phương thức khởi dựng này khi tạo đối tượng mới trong
quá trình giải tuần tự hóa.
•
Các thuộc tính của lớp phải là khả-đọc (readable) và khả-ghi (writable). Đó là vì
XmlSerializer
sử dụng hàm truy xuất thuộc tính get để lấy thông tin và hàm truy xuất
thuộc tính set để phục hồi dữ liệu sau khi giải tuần tự hóa.
Bạn cũng có thể lưu trữ các đối tượng theo định dạng dựa-trên-XML bằng cách
sử dụng .NET Serialization và
System.Runtime.Serialization.Formatters.Soap.
SoapFormatter
. Trong trường hợp này, bạn chỉ cần làm cho lớp của bạn trở
thành khả-tuần-tự-hóa, không cần cung cấp phương thức khởi dựng mặc định
hay bảo đảm tất cả các thuộc tính là khả ghi. Tuy nhiên, cách này không cho bạn
quyền kiểm soát trên định dạng XML đã-được-tuần-tự-hóa.