博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C#使用xsd文件验证XML 格式是否正确
阅读量:7255 次
发布时间:2019-06-29

本文共 3557 字,大约阅读时间需要 11 分钟。

方法一:

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

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

XML 文件(a.xml):

0001
我的内容
6
true

XSD文件(a.xsd):

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();    //创建声明段 如
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); }

引文链接:

两篇重点推荐的博文:

推荐两个XML学习网站:

转载地址:http://qnkdm.baihongyu.com/

你可能感兴趣的文章
Linux下磁盘IO读写性能测试脚本
查看>>
bugfree3.0.2版本升级--更新版
查看>>
《未来架构师》的教学范例(1)
查看>>
微软私有云最佳工作模式
查看>>
范例解析:学习Android的IPC主板模式
查看>>
Linux运维之网络运维
查看>>
大话nbu一(netbackup的安装和部署)
查看>>
Powershell AWS 自动化管理 (6) - IAM
查看>>
AWS Elastic Block Store和Simple Storage Services区别
查看>>
基于8086CPU微处理器的汇编学习之段地址与偏移地址的分析
查看>>
停更两年,强力回归
查看>>
介绍Windows Server服务器角色、角色服务和功能
查看>>
Win Srv 2012 R2 RDS移动RDS客户端
查看>>
存储知识:数据一致性、分级存储、分层存储与信息生命周期管理
查看>>
SFB 项目经验-28-设置-所有用户-OWA-时区-语言-跳过-时区设置)
查看>>
U2L蔚然成风,曙光为什么能抢了VMware的风头?
查看>>
SQL Server 2012笔记分享-52:可用性指标
查看>>
当一个有性能问题的数据库摆在你的面前,作为责任人,你的处理思路是什么?...
查看>>
Android系统匿名共享内存(Anonymous Shared Memory)C++调用接口分析(6)
查看>>
参观中央财经大学机房安装centos6.4及优化小结
查看>>