使用dtd对xml进行验证

翻阅了很多资料,一直没找到使用dtd进行xml验证的相关例程。

SDK Document里的帮助也不是很详细,对dtd验证的几个关键点

没有指出。经过自己的不断尝试,大致搞清了验证的方法。把

资料简单发布上来,以备参考。

< %@Page Language="C#" Debug="true"%>
< %@Import Namespace="System.Xml"%>
< %@Import Namespace="System.Xml.Schema"%>

 1<script language="C#" runat="server">   
 2XmlTextReader reader;   
 3XmlValidatingReader vReader;   
 4void Page_Load(object sender,EventArgs E)   
 5{   
 6  
 7XmlParserContext context;   
 8  
 9reader=new XmlTextReader(Server.MapPath("test.xml"));   
10  
11reader.MoveToContent();   
12context=new XmlParserContext(null,null,"root",null,null,"<!ELEMENT root (items)><!ELEMENT items (item)><!ELEMENT item 
13
14(#PCDATA)>",null,null,XmlSpace.None);   
15vReader=new XmlValidatingReader(reader.ReadOuterXml(),XmlNodeType.Element,context);   
16vReader.ValidationEventHandler+=new ValidationEventHandler(this.ValidationCallback);   
17reader=(XmlTextReader)vReader.Reader;   
18try{   
19while(vReader.Read()){}   
20}   
21catch   
22{   
23Response.Write("Important Error");   
24}   
25if (reader!=null) reader.Close();   
26if (vReader!=null) vReader.Close();   
27  
28}   
29public void ValidationCallback(object Sender,ValidationEventArgs e)   
30{   
31Response.Write("Validation Error!");   
32Response.Write("<br>");   
33Response.Write("Line:"+reader.LineNumber);   
34Response.Write("<br>");   
35Response.Write("Line:"+reader.LinePosition);   
36}   
37</script>
Published At
Categories with Web编程
Tagged with
comments powered by Disqus