• 用xsd验证xml


    using System;
    using System.Text;
    using System.Xml;
    
    namespace WebApplication1
    {
        public partial class _Default : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
    
            }
            StringBuilder sb = null;
            protected void ValidateFile(object sender, EventArgs e)
            {
                string dataFile = Server.MapPath("Order.xml");
                string schemaFile = Server.MapPath("OrderSchema.xsd");
                string namespaceUrl = "http://tempuri.org/OrderSchema.xsd";
    
                XmlReaderSettings settings = new XmlReaderSettings();
                settings.ValidationType = ValidationType.Schema;
                settings.Schemas.Add(namespaceUrl, schemaFile);
                settings.ValidationEventHandler += new System.Xml.Schema.ValidationEventHandler(settings_ValidationEventHandler);
    
                string errorMessage="这不是一个合乎规范的数据文件";
                sb = new StringBuilder();
    
                XmlReader reader = XmlReader.Create(dataFile, settings);
                try
                {
                    reader.MoveToContent();
                    while (reader.Read())
                    {
                        if (reader.NodeType == XmlNodeType.Document && reader.NamespaceURI != namespaceUrl)
                        {
                            Response.Write(errorMessage);
                            break;
                        }
                    }
                }
                catch (XmlException ex)
                {
                    sb.AppendFormat("{0}<br />", ex.Message);
                }
                finally
                {
                    reader.Close();
                }
    
                if (sb.Length == 0)
                    Response.Write("该文档是合法的");
                else
                    Response.Write(sb.ToString());
            }
    
            void settings_ValidationEventHandler(object sender, System.Xml.Schema.ValidationEventArgs e)
            {
                sb.AppendFormat("{0}<br />", e.Message);
            }
        }
    }

    如果传过来的是XMl的string类型

             StringBuilder sb = null;
            public bool CheckXML(string xml)
            {
                if (xml == null || xml == "")
                {
                    return true;
                }
                byte[] array = Encoding.ASCII.GetBytes(xml);
                MemoryStream stream = new MemoryStream(array);
    
                string schemaFile = System.Web.HttpContext.Current.Server.MapPath("K2HandoffTemplate.xsd");
    
                XmlReaderSettings settings = new XmlReaderSettings();
                settings.ValidationType = ValidationType.Schema;
                settings.Schemas.Add(null, schemaFile);
                settings.ValidationEventHandler += new System.Xml.Schema.ValidationEventHandler(settings_ValidationEventHandler);
                sb = new StringBuilder();
    
                XmlReader reader = XmlReader.Create(stream, settings);
                try
                {
                    reader.MoveToContent();
                    while (reader.Read())
                    {
                        if (reader.NodeType == XmlNodeType.Document)
                        {
                            return false;
                        }
                    }
                }
                catch (XmlException ex)
                {
                    return false;
                }
                finally
                {
                    reader.Close();
                }
    
                if (sb.Length == 0)
                    return true;
                else
                    return false;
            }
    
            void settings_ValidationEventHandler(object sender, System.Xml.Schema.ValidationEventArgs e)
            {
                sb.AppendFormat("{0}<br />", e.Message);
            }
  • 相关阅读:
    如何在博客园中添加新随笔以及随笔参考格式
    如何在班级博客中提交作业
    C高级第一次作业
    MySQL调优
    个人作业--软件工程实践总结
    动态分区最佳-最坏-最先分配
    动态分区代码
    个人作业-软件评测
    软件工程第五次作业
    软件工程第四次作业——结对作业
  • 原文地址:https://www.cnblogs.com/shinima/p/4135246.html
Copyright © 2020-2023  润新知