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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值