本文实例讲述了C#使用xsd文件验证XML格式是否正确的实现方法。分享给大家供大家参考,具体如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
//创建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#程序设计有所帮助。