代码改变世界

使用XmlSchemaSet验证

  Clingingboy  阅读(1083)  评论(0编辑  收藏  举报
XmlSchemaSet包含 XML 架构定义语言 (XSD) 架构的缓存

不使用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


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




 1void 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后就不会出现这样的错误了

记录一下
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示