致力于技术进步

专注于编程艺术

博客园 首页 新随笔 联系 订阅 管理

#region summary
/****************************************************
 *
 * 功能描述:   Xml验证类
 *
 * 作    者:   laozhou     *
 * 修改日期:   20090701
 *
 * 职    责:  
 *
 * 特    性:  
 *              §命名规则:
 *
 * ***************************************************/
#endregion

using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Xml;

namespace BusinessLayer
{
    /// <summary>
    /// XML验证类
    /// </summary>
    public sealed class XmlValidation
    {
        private bool security;
        /// <summary>
        /// 是否类型安全
        /// </summary>
        public bool Security
        {
            get
            {
                return this.security;
            }
        }

        public XmlValidation()
        {
            //TODO:
            this.security = true;
        }
       
        /// <summary>
        /// 启动验证
        /// </summary>
        /// <param name="xml">待验证的XML</param>
        /// <param name="xsdtype">验证XML的类型名</param>
        public void StartValidator(string xml,string xsdtype)
        {
            try
            {
                TextReader txtreader = new StringReader(xml);

                string schema = Parameters.XmlSchemas[xsdtype].InnerXml;

                XmlReader xsdreader = XmlReader.Create(new StringReader(schema));

                XmlReaderSettings settings = new XmlReaderSettings();
                settings.ValidationType = ValidationType.Schema;

                settings.Schemas.Add(null, xsdreader);
                xsdreader.Close();

                settings.ValidationEventHandler += new System.Xml.Schema.ValidationEventHandler(settings_ValidationEventHandler);

                XmlReader xmlreader = XmlReader.Create(txtreader, settings);

                while (xmlreader.Read())
                {
                    if (!this.security)
                    {
                        break;
                    }
                }

                xmlreader.Close();
            }
            catch (Exception exception)
            {
                throw exception;
            }
        }
        /// <summary>
        /// XML验证异常处理
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        void settings_ValidationEventHandler(object sender, System.Xml.Schema.ValidationEventArgs e)
        {
            this.security = false;
        }
    }
}

posted on 2011-02-12 16:37  stephen&amp;#183;周  阅读(122)  评论(0)    收藏  举报