• 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);
              }
          }
      }

      三:运行效果

      

     

      

  • 相关阅读:
    [美团 CodeM 初赛 Round A]最长树链
    [POI2005]Toy Cars
    [CodePlus2017NOV]晨跑
    [JLOI2011]不重复数字
    [NEERC2007][SHOI2008]Cactus Reloaded
    [NOI2015]软件包管理器
    [HAOI2015]树上操作
    CF1097D Makoto and a Blackboard
    Luogu P5339 [TJOI2019]唱、跳、rap和篮球
    HNCPC2019H 有向图
  • 原文地址:https://www.cnblogs.com/menglin2010/p/2307602.html
Copyright © 2020-2023  润新知