• 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 以及 验证

    XML学习之Xml Schema:一、Xml Schema概述

    推荐两个XML学习网站:

    在 w3school,你可以找到你所需要的所有的网站建设教程。

    W3China.ORG中国万维网联盟

  • 相关阅读:
    生产宕机dunp配置
    虚拟机下载地址
    处理soapUI特殊返回报文 【原】
    SpringMVC 手动控制事务提交 【转】
    码云URL
    Java IO流操作汇总: inputStream 和 outputStream【转】
    springMVC下载中文文件名乱码【转】
    js
    js
    js
  • 原文地址:https://www.cnblogs.com/rainbow70626/p/4743780.html
Copyright © 2020-2023  润新知