码迷,mamicode.com
首页 > Windows程序 > 详细

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

时间:2015-08-20 01:00:45      阅读:339      评论:0      收藏:0      [点我收藏+]

标签:

方法一:

我使用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 以及 验证

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

标签:

原文地址:http://www.cnblogs.com/rainbow70626/p/4743780.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!