C#代码通过dtd验证xml文件格式是否正确

来源:互联网 发布:便宜又好看的淘宝店 编辑:程序博客网 时间:2024/04/28 06:34

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;
        }

原创粉丝点击