使用Asp.Net中的XmlValidatingReader来验证XML Schema.

这段时间,我正在学习XML,书上介绍使用Xerces-C或Xerces-J来验证XML文档的Schema或DTD,结果,发现上面的工具不好用.

后来,只有放下书,到书店看看,有没有其他什么书能带来帮助.当检到Professiona ASP.NET XML with C# 这本书时,里面讲到了使用System.Xml 和 System.Xml.Schema命名空间下的XmlTextReader类和XmlValidatingReader类来验证带有Schema或DTD的XML文档.便买下来了.

回寝室后,根据书里面面的介绍,写了一个小的测试程序,发现还很管用,在这里,但贴出来,希望给需要的人有帮助.

代码如下:

<%@Page Debug="true"%>

<%@Import Namespace="System"%>

<%@Import Namespace="System.Xml"%>

<%@Import Namespace="System.Xml.Schema"%>

<script language="C#" runat="server">

protected void uploadBtn_Click(Object sender,EventArgs e)

{

XmlTextReader myXml = null;

XmlValidatingReader myXmlDoc = null;

int nElements = 0; //统计文档中element的个数

int nAttributes = 0; //统计文档中Attributes的个数

int nComments = 0; //统计文档中 Comment的个数

int nPIs = 0; //统计文档中ProcessingInstruction的个数

int nCDATAs = 0; //统计文档中CDATA的个数

string sWorkingText = "";

resultArea.Text = "";

try

{

//装载XML Document

myXml = new XmlTextReader(fileSelector.PostedFile.InputStream);

myXml.WhitespaceHandling = WhitespaceHandling.None;

//XmlValidatingReader是XmlTextReader的帮助功能

//需要从XmlTextReader对象获取实例

myXmlDoc = new XmlValidatingReader(myXml);

myXmlDoc.ValidationType = ValidationType.Auto;

//验证事件委托的签名

myXmlDoc.ValidationEventHandler += new ValidationEventHandler(this.ValidationEventCallBack);

//在遍历XML文档的时候,XmlValidatingReadert将根据Schema或DTD

//对XML进行验证。

while(myXmlDoc.Read())

{

//这里面的语句的作用主要是分析XML文档各NODE,

//但while循环还是必要,因为只有逐个遍历所有个的NODE,才会检查出验证是否匹配。

switch(myXmlDoc.NodeType) //Judge Crrent Node‘s type. 判定当前结点的类型

{

case XmlNodeType.Element : // Element 元素

++nElements;

nAttributes += myXmlDoc.AttributeCount;

break;

case XmlNodeType.Text : //文本内容

sWorkingText ="<b>text:</b>" + myXmlDoc.Value + "<br/>";

resultArea.Text += sWorkingText;

break;

case XmlNodeType.Comment: //注释

++nCommen;

break;

case XmlNodeType.ProcessingInstruction: //处理指令

++nPIs;

break;

case XmlNodeType.CDATA: //CDATA

++nCDATAs;

break;

}

}

sWorkingText = "<br/>" + "Total number of elements:" + nElements + "<br/>";

sWorkingText += "Total number of attributes in document:" + nAttributes + "<br/>";

sWorkingText += "Total comments:" + nComments + "<br/>";

sWorkingText += "Total processingInstructions:" + nPIs + "<br/>";

sWorkingText += "Total CDATA sections:" + nCDATAs;

resultArea.Text += sWorkingText;

}

catch(XmlException exec)

{

sWorkingText = "Exception while parsing:" + "<br/>";

sWorkingText += "Line number:" + exec.LineNumber + "<br/>";

sWorkingText += "Message:" + exec.Message + "<br/>" + "<br/>";

sWorkingText += "Line position:" + exec.LinePosition + "<br/>";

sWorkingText += "Stack Trace:" + "<br/>" + exec.StackTrace;

resultArea.Text = sWorkingText;

}

finally

{

if (myXmlDoc!=null)

{

myXmlDoc.Close();

}

}

}

使用Asp.Net中的XmlValidatingReader来验证XML Schema.,布布扣,bubuko.com

时间: 2024-10-25 03:11:02

使用Asp.Net中的XmlValidatingReader来验证XML Schema.的相关文章

ASP.NET 中通过Form身份验证 来模拟Windows 域服务身份验证的方法

This step-by-step article demonstrates how an ASP.NET   application can use Forms authentication to permit users to authenticate   against the Active Directory by using the Lightweight Directory Access Protocol   (LDAP). After the user is authenticat

ASP.NET中的Forms身份验证模式

Forms身份验证:通过应用程序设置的登录界面进行用户身份验证,若验证成功则调转到验证之前请求的url. 原理图: 原文地址:https://www.cnblogs.com/JDotNet/p/3451263.html

ASP.NET中验证控件的使用

原文:ASP.NET中验证控件的使用 前言: 前几日,无奈用JS判断控件的有效性,发现的确是一件费力.费神的事情!特别是针对邮件格式.邮政编码等的关于正则表达式的JS验证(其中涉及正则表达式的比较等,较烦~).其实对于这些常用的控件有效性验证,在Asp.Net中有单独的验证控件可供使用.他们可以满足一般的,诸如非空,范围.比较等的验证. 验证控件: Asp.Net中内置的验证控件有:RequiredFieldValidation.RangeValidation.RegularExpressVal

ASP.NET中的验证控件

ASP.NET提供了如下的控件: RequiredFieldValidator: 字段必填 (ControlTovalidate设定要验证的控件) RangeValidator: 值在给定的最大值,最小值之间() CompareValidator: 用于比较两个值的关系是否满足要求或者是否是指定类型的数据 RegularExpressionValidator: 校验数据满足正则表达式 CustomValidator: 自定义验证 Validator验证控件的共性 IsValid属性,用来判断页面

ASP.NET中身份验证的三种方法

Asp.net的身份验证有有三种,分别是"Windows | Forms | Passport",其中又以Forms验证用的最多,也最灵活.Forms 验证方式对基于用户的验证授权提供了很好的支持,可以通过一个登录页面验证用户的身份,将此用户的身份发回到客户端的Cookie,之后此用户再访问这个web应用就会连同这个身份Cookie一起发送到服务端.服务端上的授权设置就可以根据不同目录对不同用户的访问授权进行控制了. 问题来了,在实际是用中我们往往需要的是基于角色,或者说基于用户组的验

asp.net中使用基于角色role的Forms验证

http://www.cnblogs.com/yao/archive/2006/06/24/434783.html asp.net中使用基于角色role的Forms验证,大致经过几下四步:1.配置系统web.config system.web> <authentication mode="Forms" >  <forms name=".yaoCookies" loginUrl="/duan/Manage/login.aspx&quo

asp.net中使用forms验证

1.首先在web.config中修改验证方式为 "Forms" <authentication mode="Forms"> 这里的模式有很多中,可自己去百度 2.在<authentication mode="Forms"></authentication>中添加: <forms name="loginAuth" protection="All" loginUrl=&

ASP.NET中 RegularExpressValidator(正则验证)的使用

原文:ASP.NET中 RegularExpressValidator(正则验证)的使用 ylbtech-ASP.NET-Control-Validator: RegularExpressValidator(正则验证)的使用 ASP.NET中 RegularExpressValidator(正则验证)的使用. 1.A,运行效果返回顶部 RegularExpressionValidator:正则验证 属性: ControlToValidate:要验证的控件 ErrorMessage:错误提示信息

ASP.NET中身份验证

ASP.NET中身份验证有三种方式:Windows.Forms和Passport. 1.Windows验证,基于窗体验证,需要每个页面写上验证身份代码,相对灵活,但操作过于复杂: 2.Passport验证,使用由微软提供的集中身份验证方式,安全性较高,但实现较复杂: 3.Forms验证,将所定义的文件和目录集中到一个页面去做验证,将用户的身份发回写到客户端的Cookie,在Cookie未过期的时间段内用户再次访问网站,就会连同身份Cookie发送到服务器端,服务端的授权设置可以根据不同目录不同用