使用XmlSchemaSet验证
2006-04-16 15:18 Clingingboy 阅读(1092) 评论(0) 收藏 举报
XmlSchemaSet包含 XML 架构定义语言 (XSD) 架构的缓存
不使用XmlSchemaSet和使用XmlSchemaSet的比较
1.没使用XmlSchemaSet
执行页面以后,无法修改XSD文件,会出现提示,文件正在使用

使用XmlSchemaSet后就不会出现这样的错误了
记录一下
不使用XmlSchemaSet和使用XmlSchemaSet的比较
1.没使用XmlSchemaSet
1
<%@ Page Language="C#"%>
2
<%@ Import Namespace="System.Xml" %>
3
<%@ Import Namespace="System.Xml.Schema" %>
4
5
<script runat="server">
6
private StringBuilder _builder = new StringBuilder();
7
void Page_Load(object sender, EventArgs e)
8
{
9
string xmlPath = Request.PhysicalApplicationPath + @"\App_Data\Authors.xml";
10
string xsdPath = Request.PhysicalApplicationPath + @"\App_Data\Authors.xsd";
11
XmlReader reader = null;
12
XmlReaderSettings settings = new XmlReaderSettings();
13
settings.ValidationEventHandler += new ValidationEventHandler(this.ValidationEventHandler);
14
settings.ValidationType = ValidationType.Schema;
15
settings.Schemas.Add(null, XmlReader.Create(xsdPath));
16
reader = XmlReader.Create(xmlPath, settings);
17
while (reader.Read())
18
{
19
}
20
if (_builder.ToString() == String.Empty)
21
Response.Write("Validation completed successfully.");
22
else
23
Response.Write("Validation Failed. <br>" + _builder.ToString());
24
}
25
26
//报错
27
void ValidationEventHandler(object sender, ValidationEventArgs args)
28
{
29
_builder.Append("Validation error: " + args.Message + "<br>");
30
}
31
32
</script>
33
<html xmlns="http://www.w3.org/1999/xhtml" >
34
<head runat="server">
35
<title>XSD Validation</title>
36
</head>
37
<body>
38
<form id="form1" runat="server">
39
<div>
40
</div>
41
</form>
42
</body>
43
</html>
44
<%@ Page Language="C#"%>2
<%@ Import Namespace="System.Xml" %>3
<%@ Import Namespace="System.Xml.Schema" %>4

5
<script runat="server"> 6
private StringBuilder _builder = new StringBuilder();7
void Page_Load(object sender, EventArgs e)8
{9
string xmlPath = Request.PhysicalApplicationPath + @"\App_Data\Authors.xml"; 10
string xsdPath = Request.PhysicalApplicationPath + @"\App_Data\Authors.xsd";11
XmlReader reader = null; 12
XmlReaderSettings settings = new XmlReaderSettings();13
settings.ValidationEventHandler += new ValidationEventHandler(this.ValidationEventHandler);14
settings.ValidationType = ValidationType.Schema; 15
settings.Schemas.Add(null, XmlReader.Create(xsdPath));16
reader = XmlReader.Create(xmlPath, settings);17
while (reader.Read()) 18
{ 19
}20
if (_builder.ToString() == String.Empty)21
Response.Write("Validation completed successfully.");22
else23
Response.Write("Validation Failed. <br>" + _builder.ToString());24
}25

26
//报错27
void ValidationEventHandler(object sender, ValidationEventArgs args)28
{ 29
_builder.Append("Validation error: " + args.Message + "<br>"); 30
} 31
32
</script>33
<html xmlns="http://www.w3.org/1999/xhtml" >34
<head runat="server">35
<title>XSD Validation</title>36
</head>37
<body>38
<form id="form1" runat="server">39
<div> 40
</div>41
</form>42
</body>43
</html>44

执行页面以后,无法修改XSD文件,会出现提示,文件正在使用

1
void Page_Load(object sender, EventArgs e)
2
{
3
string xmlPath = Request.PhysicalApplicationPath + @"\App_Data\Authors.xml";
4
string xsdPath = Request.PhysicalApplicationPath + @"\App_Data\Authors.xsd";
5
XmlSchemaSet schemaSet = new XmlSchemaSet();
6
schemaSet.Add(null, xsdPath);
7
XmlReader reader = null;
8
XmlReaderSettings settings = new XmlReaderSettings();
9
settings.ValidationEventHandler += new ValidationEventHandler(this.ValidationEventHandler);
10
settings.ValidationType = ValidationType.Schema;
11
settings.Schemas = schemaSet;
12
reader = XmlReader.Create(xmlPath, settings);
void Page_Load(object sender, EventArgs e)2
{ 3
string xmlPath = Request.PhysicalApplicationPath + @"\App_Data\Authors.xml"; 4
string xsdPath = Request.PhysicalApplicationPath + @"\App_Data\Authors.xsd";5
XmlSchemaSet schemaSet = new XmlSchemaSet();6
schemaSet.Add(null, xsdPath);7
XmlReader reader = null; 8
XmlReaderSettings settings = new XmlReaderSettings();9
settings.ValidationEventHandler += new ValidationEventHandler(this.ValidationEventHandler);10
settings.ValidationType = ValidationType.Schema; 11
settings.Schemas = schemaSet; 12
reader = XmlReader.Create(xmlPath, settings);使用XmlSchemaSet后就不会出现这样的错误了
记录一下

浙公网安备 33010602011771号