xml 数据验证 (XML模式)(转)

验证是通过xsd模式或者dtd或者xdr模式对xml文档内容强制执行规则的过程。可以有两种方式定义xml 文档的结构:DTD和XML模式

对于xsd文件,在vs2005中之需要添加一个xml构架文件就可以了,再在其上设置元素关系如图

(只要在authors和author中设置为 Unnamed complexType)

其xml文件如下:
<?xml version="1.0"?>
<authors>
   <author>
     <au_id>172-32-1176</au_id>
     <au_lname>White</au_lname>
     <au_fname>Johnson</au_fname>
     <phone>408 496-7223</phone>
     <address>10932 Bigge Rd.</address>
     <city>Menlo Park</city>
     <state>CA</state>
     <zip>94025</zip>
     <contract>true</contract>
   </author>
   <author>
     <au_id>213-46-8915</au_id>
     <au_lname>Green</au_lname>
     <au_fname>Marjorie</au_fname>
     <phone>415 986-7020</phone>
     <address>309 63rd St. #411</address>
     <city>Oakland</city>
     <state>CA</state>
     <zip>94618</zip>
     <contract>true</contract>
   </author>
</authors>
一个验证实例:
     private StringBuilder _builder = new StringBuilder();
     void Page_Load(object sender, EventArgs e)
     {
         string xmlPath = Request.PhysicalApplicationPath + @"\App_Data\Authors.xml";
         string xsdPath = Request.PhysicalApplicationPath + @"\App_Data\hys.xsd";
         XmlReader reader = null;        
         XmlReaderSettings settings = new XmlReaderSettings();
         settings.ValidationEventHandler += new ValidationEventHandler(this.ValidationEventHandler);
         settings.ValidationType = ValidationType.Schema;        
         settings.Schemas.Add(null, XmlReader.Create(xsdPath));
         reader = XmlReader.Create(xmlPath, settings);
         while (reader.Read())
         {            
         }
         if (_builder.ToString() == String.Empty)
             Response.Write("Validation completed successfully.");
         else
             Response.Write("Validation Failed. <br>" + _builder.ToString());
     }
     void ValidationEventHandler(object sender, ValidationEventArgs args)//定义ValidationEventHandler事件处理程序
     {        
         _builder.Append("Validation error: " + args.Message + "<br>");                
     }   

posted on 2008-04-24 10:43  LongSky  阅读(164)  评论(0编辑  收藏  举报

导航