CÁC GIẢI PHÁP LẬP TRÌNH C# - Trang 180

180
Chương 5: XML

<xsd:complexType>

<xsd:sequence>

<xsd:element name="product" type="product"

maxOccurs="unbounded" />

</xsd:sequence>

</xsd:complexType>

</xsd:element>

</xsd:sequence>

</xsd:complexType>

</xsd:element>

</xsd:schema>

Lớp

XmlValidatingReader

thực thi tất cả các quy tắc Schema này—bảo đảm tài liệu là hợp lệ

—và nó cũng kiểm tra tài liệu XML đã được chỉnh dạng hay chưa (nghĩa là không có các ký tự
bất hợp lệ, tất cả các thẻ mở đều có một thẻ đóng tương ứng, v.v...). Để kiểm tra một tài liệu,
hãy dùng phương thức

XmlValidatingReader.Read

để duyệt qua từng nút một. Nếu tìm thấy

lỗi,

XmlValidatingReader

dựng lên sự kiện

ValidationEventHandler

với các thông tin về lỗi.

Nếu muốn, bạn có thể thụ lý sự kiện này và tiếp tục kiểm tra tài liệu để tìm thêm lỗi. Nếu bạn
không thụ lý sự kiện này, ngoại lệ

XmlException

sẽ được dựng lên khi bắt gặp lỗi đầu tiên và

quá trình kiểm tra sẽ bị bỏ dở. Để kiểm tra một tài liệu đã được chỉnh dạng hay chưa, bạn có
thể sử dụng

XmlValidatingReader

mà không cần đến Schema.

Ví dụ kế tiếp trình bày một lớp tiện ích dùng để hiển thị tất cả các lỗi trong một tài liệu XML
khi phương thức

ValidateXml

được gọi. Các lỗi sẽ được hiển thị trong một cửa sổ Console, và

một biến luận lý được trả về để cho biết quá trình kiểm tra thành công hay thất bại.

using System;

using System.Xml;

using System.Xml.Schema;

public class ConsoleValidator {

// Thiết lập thành true nếu tồn tại ít nhất một lỗi.

private bool failed;

public bool Failed {

get {return failed;}

}

Liên Kết Chia Sẽ

** Đây là liên kết chia sẻ bới cộng đồng người dùng, chúng tôi không chịu trách nhiệm gì về nội dung của các thông tin này. Nếu có liên kết nào không phù hợp xin hãy báo cho admin.