Kiểm tra XML với XSD, Validate XML against xsd schema with C#, XML Validator Validate XML against xsd schema with C#
Chúng ta có một file xml, một ứng dụng đọc ghi nó bằng C# và một file xsd định nghĩa cấu trúc của xml. Vậy làm sao kiểm tra dữ liệu đọc lên từ file xml và dữ liệu thu được từ ứng dụng có phù hợp xsd schema của nó hay không?
Bài này s cùng các bạn sẽ tìm hiểu về điều đó.


Việc kiểm tra rất có ích với ứng dụng của chúng ta, nó giúp loại bỏ được những lỗi không mong muốn từ sự thay đổi của file XML. Bài viết này s chỉ đề cập việc kiểm tra trên XSD schema với cách ghi đọc qua đối tượng XmlDocument ở bài trước .
Đây là cách mà chúng ta kiểm tra nội dung có phù hợp với XSD từ việc đọc file XML @link
        private const string path = "books.xml";       
private static XmlDocument xml;
static XmlReader reader;
public static XmlDocument Xml
{
get
{
if (xml == null)
{
//s/ Validate against xsd file when load xml file.
XmlReaderSettings s = new XmlReaderSettings();
s.Schemas.Add("", "books.xsd");
s.ValidationType = ValidationType.Schema;
reader = XmlReader.Create(path, s);

xml = new XmlDocument();
xml.Load(reader);
}
return xml;
}
}

Còn đây là đây là phần validate dữ liệu trước khi chúng ta Save xuống file XML
public static string SaveFile()
{
try
{
ValidationEventHandler he = new ValidationEventHandler(ValidationHandler);
Xml.Validate(he);
reader.Close();
if (isErrors > 0)
{
throw new Exception(ErrorMessage);
}
else {
Xml.Save(path);
}

}
catch (Exception error)
{
// XML Validation failed
//Console.WriteLine("XML validation failed." + "\r\n" + "Error Message: " + error.Message);
return error.Message;
}
return "";
}
public static void ValidationHandler(object sender,ValidationEventArgs args)
{
ErrorMessage = ErrorMessage + args.Message + "\r\n";
//s/ XML Validation failed
isErrors++;
}