xml里面<?xml version='1.0' encoding='utf-8'?>下面加上<!DOCTYPE cat SYSTEM "学汉语A.dtd">
/// <summary>
/// 通过dtd验证导入的xml文件格式是否正确
/// </summary>
/// <param name="filename">要验证的xml文件的路径</param>
/// <returns></returns>
public bool Validate(string filename)
{
//省略了验证出错处理 直接在当前代码段处理即可
// System.Xml.Schema.ValidationEventHandler eventHandler = new System.Xml.Schema.ValidationEventHandler(MyValidationEventHandler);
System.Xml.XmlReader reader = null;
try
{
// 声明验证变量
System.Xml.XmlReaderSettings settings = new System.Xml.XmlReaderSettings();
settings.DtdProcessing = DtdProcessing.Parse;//允许dtd验证
//验证类型设为DTD 如果不需要验证可以设为ValidationType.None
settings.ValidationType = System.Xml.ValidationType.DTD;
//settings.ValidationEventHandler += eventHandler;
//创建xml读取变量
reader = System.Xml.XmlReader.Create(filename, settings);
// 将reader赋值给XmlDocument,方便处理,xmlreader本身处理能力很弱,如其名,只能读
// 验证失败将会引发一个validation异常
// 然而数据还是读到了XmlDocument里面的,仍然可以处理
System.Xml.XmlDocument doc = new System.Xml.XmlDocument();
doc.Load(reader);
}
catch (System.Xml.XmlException e)
{
MessageBox.Show(e.Message);
return false;
}
catch (System.Xml.Schema.XmlSchemaException e)
{
MessageBox.Show(e.Message);
return false;
}
finally
{
if (reader != null) reader.Close();
}
return true;
}