C#使用xsd文件验证XML 格式是否正确

方法一:

我使用XmlReader来处理,因为觉得XmlReader简单点。

我自己做了个例子来说明,例子里的XML不是很复杂,没有子节点的。

XML 文件(a.xml):

<?xml version="1.0" encoding="utf-8" ?>
<PROFILE>
  <PROFILEID>0001</PROFILEID>
  <DESCIPTION>我的内容</DESCIPTION>
  <URL><![CDATA[http://www.bclc.com/app/DidYouWin/WinningNumbers/Lotto649Print.asp?YEAR=2000&MONTH=6&DRAW_DATE=&GAMEID=1]]></URL>
  <NUMBERS>6</NUMBERS>
  <BONUS>true</BONUS>
</PROFILE>

XSD文件(a.xsd):

<?xml version="1.0" encoding="utf-16"?>
<xsd:schema attributeFormDefault="unqualified" elementFormDefault="qualified" version="1.0" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:element name="PROFILE">
    <xsd:complexType>
      <xsd:sequence>
        <xsd:element name="PROFILEID" type="xsd:int" />
        <xsd:element name="DESCIPTION" type="xsd:string" />
        <xsd:element name="URL" type="xsd:string" />
        <xsd:element name="NUMBERS" type="xsd:int" />
        <xsd:element name="BONUS" type="xsd:boolean" />
      </xsd:sequence>
    </xsd:complexType>
  </xsd:element>
</xsd:schema>

C#使用xsd文件验证XML 格式是否正确源码:

XmlReaderSettings st = new XmlReaderSettings();
XmlSchemaSet schemaSet = new XmlSchemaSet();
schemaSet.Add(null, spath);
//st.ValidationEventHandler += new ValidationEventHandler(ValidationEventHandler);
st.ValidationFlags = st.ValidationFlags | XmlSchemaValidationFlags.ReportValidationWarnings;
st.ValidationType = ValidationType.Schema;
st.Schemas.Add(schemaSet, @"a.xsd"); 

//设置验证xml出错时的事件。 st.ValidationEventHandler += (obj, e)=>{ //这里加上你的信息处理。 };
XmlReader xr = XmlReader.Create(@"a.xml", st);
while (xr.Read())
{
  if (xr.IsStartElement()
    { xr.Read(); }
}
xr.Close();

方法二:

//创建xmlDocument
            XmlDocument doc = new XmlDocument(); 

//创建声明段 如<?xml version="1.0" encoding="utf-8" ?>
                doc.AppendChild(doc.CreateXmlDeclaration("1.0", "utf-8", null));
                //创建一个根节点 KYTResults
                XmlElement results = doc.CreateElement("KYTResults"); 

                //创建 ResultsStatus
                XmlNode resultsStatus = doc.CreateElement("ResultsStatus");
                //创建Level
                XmlElement element = doc.CreateElement("Level");
                element.InnerText = status ? "0" : "1";
                resultsStatus.AppendChild(element);
                //创建Description
                element = doc.CreateElement("Description");
                element.InnerText = msg;
                resultsStatus.AppendChild(element);
                //创建PassKey 如果用户登录失败 将加载空字符
                element = doc.CreateElement("PassKey");
                element.InnerText = key;
                resultsStatus.AppendChild(element);
                results.AppendChild(resultsStatus);
                //END 创建 ResultsStatus  

                //创建 DataList  数据集合
                if (status)
                {
                    results.AppendChild(dataList);
                }
                //END 创建一个根节点 KYTResults
                doc.AppendChild(results); 

                string path = Server.MapPath("/ws/xsd/ReceiveReturn.xsd"); 

//验证xml格式是否正确 通过xsd验证
                    string error = "";
                    //声明XmlSchema
                    XmlSchemaSet schemas = new XmlSchemaSet();
                    schemas.Add("", XmlReader.Create(path));
                    //声明事件处理方法
                    ValidationEventHandler eventHandler = new ValidationEventHandler(delegate(object sender, ValidationEventArgs e) {
                        switch (e.Severity)
                        {
                            case XmlSeverityType.Error:
                                error += e.Message;
                                break;
                            case XmlSeverityType.Warning:
                                break;
                        }
                    });
                    doc.Schemas = schemas;
                    //验证xml
                    doc.Validate(eventHandler);
                    //检查是否有异常 如果格式不正确就抛出来
                    if (!"".Equals(error))
                    {
                        throw new Exception(error);
                    } 

引文链接:

C#使用XSD来验证XML。

C# 使用xsd文件验证XML 格式是否正确

XML校验学习之一:使用XSD模式验证XML数据

简介C#读取XML的两种方式

一篇重点推荐的博文:XmlSpy / XSD 以及 验证

时间: 2024-08-04 21:38:17

C#使用xsd文件验证XML 格式是否正确的相关文章

XSD(XML Schema Definition)用法实例介绍以及C#使用xsd文件验证XML格式

XSD(XML Schema Definition)用法实例介绍以及C#使用xsd文件验证XML格式 http://blog.csdn.net/gdjlc/article/details/11374787 2013-09-08 12:16 2824人阅读 评论(0) 收藏 举报 分类: XML(5) 版权声明:本文为博主原创文章,未经博主允许不得转载. XML Schema 语言也称作 XML Schema 定义(XML Schema Definition,XSD),作用是定义 XML 文档的合

IIS配置文件的XML格式不正确 applicationHost.config崩溃 恢复解决办法

当打开IIS管理器,或配置网站时提示错误:配置文件的XML格式不正确 且是applicationHost.config的问题,那么肯定是applicationHost.config被破坏,IIS就崩溃. 解决办法就是恢复applicationHost.config 先检查C:\Windows\System32\inetsrv\config目录下的applicationHost.config文件,最好备份一份 使用IIS提供的AppCmd.exe的restore功能恢复applicationHos

[转] IIS配置文件的XML格式不正确 applicationHost.config崩溃 恢复解决办法

IIS配置文件的XML格式不正确 applicationHost.config崩溃 恢复解决办法 源文件:http://www.cnblogs.com/yuejin/p/3385584.html 当打开IIS管理器,或配置网站时提示错误:配置文件的XML格式不正确 且是applicationHost.config的问题,那么肯定是applicationHost.config被破坏,IIS就崩溃. 解决办法就是恢复applicationHost.config 先检查C:\Windows\Syste

JS验证邮箱格式是否正确 实例代码

如何用js验证邮箱格式是否正确?分享一个例子.代码: /* *验证邮箱格式是否正确 *参数strEmail,需要验证的邮箱 */ function chkEmail(strEmail) { if (!/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/.test(strEmail)) { return false; } else { return true; } } 您可能感兴趣的文章: js正则表达式判断邮箱格式是否正确 js验证邮箱格式 js验证em

验证:验证邮箱格式是否正确

需求说明: 使用正则表达式验证页面文本输入框,输入的数据为邮箱格式. 代码说明: 这里只介绍正则表达式部分,其他部分的代码不做介绍.如有其它逻辑判断可自己添加. 步骤一:建立一个页面可以是html.jsp等,引入jquery-3.2.1.min.js(其他版本亦可). 步骤二:编写正则表达式. 代码部分如下: <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"

WebService,ASMX文件使用XML格式数据传递参数、验证与获取XML格式返回值的一种方式

1:首先WebService方法定义,每个方法定义两个参数,一个用于验证权限,string格式的XML文本用于传输数据.最终目的实现,WebService方法,验证权限,获取XML数据,处理之后返回XML数据.一下面一段代码为例进行说明: [WebMethodAttribute(Description = "新增督学计划")] public string InspectorPlan_Add(string Token, string XMLParas) { try { //安全凭证检查

Spring如何加载XSD文件(org.xml.sax.SAXParseException: Failed to read schema document错误的解决方法)

本文原文连接: http://blog.csdn.net/bluishglc/article/details/7596118 ,转载请注明出处! 有时候你会发现过去一直启动正常的系统,某天启动时会报出形如下面的错误: [plain] view plaincopy org.xml.sax.SAXParseException: schema_reference.4: Failed to read schema document 'http://www.springframework.org/sche

数据存储-自定义Json串写入文件与XML格式读取数据

数据存储总的来说有三种方式 1>,数据库 2>,文件 3>,网络 在这里我介绍的是Json格式与XML格式的文件存储 先说说常用的文件存储数据的格式 1>,Json格式 2>,XML格式 这俩种格式我觉得区别的话应该是Json适合存储小数据,XML适合存储大数据 在cocos2d-x中,如果我们要用Json首先我们要先导入一个Json库:libjson demo如下: 要添加libjson头文件 创建Json格式的数据: 这里用JSONNode,定义一个父节点n,再定义一个节

Javascript验证xml格式

1 <script> 2 function validateXML(xmlContent) 3 { 4 //errorCode 0是xml正确,1是xml错误,2是无法验证 5 var xmlDoc,errorMessage,errorCode = 0; 6 // code for IE 7 if (window.ActiveXObject) 8 { 9 xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); 10 xmlDoc.as