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

 

转载于:https://www.cnblogs.com/sgciviolence/archive/2010/06/23/1763840.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值