XML验证框架在项目中的应用

接口中使用了XML参数, 如果用程序来验证XML会非常的复杂。如果用xml框架来验证,那就很简单了

1.可以通过.net2005程序来创建xml的框架,先中一个xml文件,在菜单栏里可以看到XML->生成框架。

 

2.验证

 

/// <summary>
        /// 验证外部系统发送来的数据格式是否符合要求
        /// </summary>
        /// <param name="OperationsXml">被验证的xml串</param>
        /// <param name="schemaXml">框架文件路径</param>
        /// <param name="returnMsg">错误信息</param>
        /// <returns>bool</returns>
        public bool ValidateFile(string OperationsXml, string schemaXml, ref string returnMsg)
        {

            StringReader opStrReader = new StringReader(OperationsXml);
            //StringReader schStrReader = new StringReader(schemaXml);

            XmlReader opXmlReader = XmlReader.Create(opStrReader);
            //XmlReader schXmlReader = XmlReader.Create(schStrReader);
            XmlReader schXmlReader = XmlReader.Create(schemaXml);

            XmlReaderSettings settings = new XmlReaderSettings();
            settings.Schemas.Add(null, schXmlReader);
            settings.ValidationType = ValidationType.Schema;

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

            sb = new StringBuilder();
            XmlReader reader = XmlReader.Create(opXmlReader, settings);
            try
            {
                while (reader.Read())
                {
                   
                }
            }
            catch (XmlException ex)
            {
                sb.AppendFormat("{0}<br />", ex.Message);
            }
            finally
            {
                reader.Close();
            }
            returnMsg = sb.ToString();
            return returnMsg.Length == 0;
        }

 

/// <summary>
        /// 格式验证回调了函数
        /// </summary>
        /// <param name="ValidationEventArgs"></param>
        /// <returns>void</returns>
        private void ValidationEventHandler(object sender, System.Xml.Schema.ValidationEventArgs e)
        {
            sb.AppendFormat("{0}<br />", e.Message);
        }

 

posted @ 2010-06-23 17:43  violence  阅读(570)  评论(0编辑  收藏  举报