使用C#调用Schema文件验证XML文档

C#代码如下:

void Main()
{
    string errorMessage;
    ValidateXML(@"C:\Tarena\Backup\数据库\xml\book.xml",@"C:\Tarena\Backup\数据库\xml\book.xsd",out errorMessage).Dump();
    errorMessage.Dump();
}

// Define other methods and classes here
static bool ValidateXML(string xmlFile,string schemaFile,out string errorMessage)
{
    bool isValid = true;    //验证结果

    try
    {
        XmlSchemaSet schemaSet = new XmlSchemaSet();
        schemaSet.Add(null,schemaFile);    //添加Schema验证文件

        XmlReaderSettings readerSetting = new XmlReaderSettings();
        readerSetting.ValidationType = ValidationType.Schema;     //配置验证方式        

        readerSetting.Schemas = schemaSet;

        using (XmlReader xmlReader = XmlReader.Create(xmlFile, readerSetting))
        {
            while (xmlReader.Read()){}
        }
        errorMessage = string.Empty;
    }
    catch (Exception ex)
    {
        isValid = false;
        errorMessage = ex.Message;
    }

    return isValid;
}

其中XML文件

<?xml version="1.0" encoding="utf-8"?>
<books xmlns="http://www.w3.org/2001/XMLSchema">
  <book id="1">
    <title>西游记</title>
    <author>吴承恩</author>
    <price>10.99</price>
    <pubdate>2010-01-01</pubdate>
    <category>文学类</category>
  </book>
  <book id="2">
    <title>三国演义</title>
    <author>罗贯中</author>
    <price>20.99</price>
    <pubdate>2010-02-01</pubdate>
    <category>文学类</category>
  </book>
  <book id="3">
    <title>红楼梦</title>
    <author>曹雪芹</author>
    <price>30.99</price>
    <pubdate>2010-03-01</pubdate>
    <category>文学类</category>
  </book>
  <book id="4">
    <title>水浒传</title>
    <author>施耐庵</author>
    <price>40.99</price>
    <pubdate>2010-04-01</pubdate>
    <category>文学类</category>
  </book>
</books>

验证文件(Schema)

<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="book.xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="books">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" name="book">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="title" type="xs:string" />
              <xs:element name="author" type="xs:string" />
              <xs:element name="price" type="xs:decimal" />
              <xs:element name="pubdate" type="xs:date" />
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>
时间: 2024-10-09 04:44:25

使用C#调用Schema文件验证XML文档的相关文章

DTD验证XML文档

DTD验证XML文档        1.DTD简介:DTD是Document Type Definition的缩写,即文档定义            1.1:DTD的内容包含:                    元素定义规则                    元素之间的关系规则                    属性的定义规则            1.2:DTD的作用如下:                    DTD使每个XML文件可以携带一个自身格式的描述          

.Net中使用xsd验证xml文档

在.NET中使用XSD可以方便的验证一个XML文档是否符合规范.这里的XSD本质上是一个xml文件,XSD相当于数据库中的表结构或者C#语言中的一个抽象类,它规定了被验证的目标xml的结构,如目标xml具有哪些节点,每个节点的顺序关系,每个节点的数据类型,每个节点的出现次数等信息. .NET中通过XmlReader和XmlReaderSettrings类可以方便的对XML进行验证,示例代码如下: 1         static void Main(string[] args) 2 { 3 //

Schema验证XML文档

1.什么是Schema 2.样板 3.为什么要用Schema 4.Schema文档结构 5.数据类型   6.基本数据类型 7.扩展数据类型 8.数据类型的特性 9.元素 类型 10.element元素 11.group元素

XML文档类型定义---XML Schema结构

5.1 Schema概述 XML Schema是2001年5月正式发布的W3C的推荐标准,经过数年的大规模讨论和开发如今终于尘埃落定,成为全球公认的XML环境下首选的数据建模工具. 使用DTD虽然带来较大的方便,但是,DTD存在一些缺陷:一是它用不同于XML的语言编写,需要不同的分析器技术.这增加了工具开发商的负担,降低了软件瘦身的可能性,此外开发人员需要多学一门语言及其语法.而XML Schema是按标准XML规则编写的,更容易掌握.二是DTD不支持名称空间.随着大部分的数据处理日益以XML为

关于Spring配置文件xml文档的schema约束

最开始使用spring框架的时候,对于其配置文件xml,只是网上得知其使用方法,而不明其意.最近想着寻根问底的探究一下.以下是本文主要内容: 1.配置文件示例. [html] view plain copy print? <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:m

Spring中xml文档的schema约束

最开始使用Spring框架的时候,对于其配置文件xml,只是网上得知其使用方法,而不明其意.最近想着寻根问底的探究一下.以下是本文主要内容: 1.配置文件示例. <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:mvc="http://www.springfram

dom4j 解析 XML文档截录

dom4j 是一种解析 XML 文档的开放源代码 XML 框架.本文介绍如何使用包含在 dom4j 中的解析器创建并修改 XML 文档. dom4j API 包含一个解析 XML 文档的工具.本文中将使用这个解析器创建一个示例 XML 文档.清单 1 显示了这个示例 XML 文档,catalog.xml. 清单 1. 示例 XML 文档(catalog.xml) <?xml version="1.0" encoding="UTF-8"?> <cat

关于XML文档的讲解

1        XML的概述 1.1 什么是XML XML全称为Extensible Markup Language,意思是可扩展的标记语言.XML语法上和HTML比较相似,但HTML中的元素是固定的,而XML的标签是可以由用户自定义的. W3C在1998年2月发布1.0版本,2004年2月又发布1.1版本,但因为1.1版本不能向下兼容1.0版本,所以1.1没有人用.同时,在2004年2月W3C又发布了1.0版本的第三版.我们要学习的还是1.0版本!!! 1.2 XML的应用场景 保存关系型数

《XML入门经典》学习进程之第2章良构的XML文档

XML解析器帮助应用程序解析XML文档,并为应用程序提供它所需要的信息.XML解析器读取XML文档中的每个字符,并判断哪些字符是文档的标签,哪些才是数据,并在应用程序处理这些数据之前对XML进行一些其他的必要的处理. XML文档中的全部标签组成了XML的标记语言. XML的标签用法与HTML的相同. 首末标签和标签之间的文本内容统称为元素. 标签之间的文本称为元素内容,该概念有专门的术语,即可解析的字符数据(PCDATA).这些术语都是XML从SGML那里继承过来的. 标签的写法除了传统的<XX