C#温故而知新学习系列之XML编程—XmlValidatingReader类对XML文档验证(七)

  阅读目录

  一:前言

  二:实现步骤

  三:运行效果

  前言
  XML文档验证是指表示这个XML文档是否符合规则,是否是个正确的XML文档,我们这里讲使用XmlValidatingReader类对XML文档验证,该类通过实现W3C建议所定义的有效性约束DTD,数据简化XDR,XML架构定义语言XSD验证服务。如果验证通过了证明这个XML文档是有效的,否则是无效的。

  XmlValidatingReader类实现XmlReader类,并以只进的方式对XML流进行验证。

  先看下面这张XML架构图,图里面描述了<BookShop>元素下的子元素必须为<Book>,本来闭合标签应该是<Book>,而我们却写成了<Boo>,我们来看这个错误的XML文档能否通过验证呢。

  

  二:实现步骤

  1:XML文件编写

  1.1 BookShop.xml

  <?xml version="1.0" encoding="utf-8"?>
  <BookShop xmlns="http://tempuri.org/BookShop.xsd">
   <Book>西游记</Book>
   <Boo>水浒传</Boo>
  </BookShop>

  2:代码文件编写

  2.1 Form1.cs

  using System;
  using System.Collections.Generic;
  using System.ComponentModel;
  using System.Data;
  using System.Drawing;
  using System.Text;
  using System.Windows.Forms;
  using System.IO;
  using System.Xml.Schema;
  using System.Xml;

  namespace XmlReaderSettingsClass
  {
      public partial class Form1 : Form
      {
          public Form1()
          {
              InitializeComponent();
          }

          private void Form1_Load(object sender, EventArgs e)
          {
              string strXmlPath = "http://www.cnblogs.com/BookShop.xml";
              string strXmlXSDPath = "http://www.cnblogs.com/BookShop.xsd";
              //把这个BookShop.xml文件打开成流
              FileStream stream = new FileStream(strXmlPath, FileMode.Open);
              //创建XmlValidatingReader类的对象
              XmlValidatingReader xvr = new XmlValidatingReader(stream, XmlNodeType.Element, null);
              //加载XML架构文档
              xvr.Schemas.Add(null, strXmlXSDPath);
              //说明验证的方式是根据XML架构来验证
              xvr.ValidationType = ValidationType.Schema;
              //预先定义一个事件
              xvr.ValidationEventHandler += new ValidationEventHandler(ValidationHandler);
              //对文档进行验证
              while (xvr.Read()) ;
              //显示验证过程完成
              MessageBox.Show("验证完成");
              //关闭打开的文件
              stream.Close();
          }

          private void ValidationHandler(object sender, ValidationEventArgs args)
          {
                //显示验证失败的消息
                MessageBox.Show("验证失败:" + args.Message);
          }
      }
  }

  三:运行效果

  

 

  

 

 

posted @ 2011-12-30 15:52  David.Meng  阅读(1042)  评论(0编辑  收藏  举报