添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

使用XSD验证XML

本文简单介绍如何使用XSD验证自己的xml。项目中我们经常使用xml作为配置或者数据交互的文件格式,在解析XML前最好验证一下或者在生成xml文件后验证一下生成的文件格式是正确,这样可以避免解析时出现一些低级的xml文件不符合预定义格式的错误。

CSDN无法正确显示这些xsd, xml以及java代码,如果需要请参考 http://yqbjtu.blog.163.com/blog/static/529426201672674444341/
第一步显示定义XSD,这个参考网上很多教程,本文给出一个简单实例。

order_v1.xsd

<?xml version="1.0" encoding="UTF-8"?>
- Licensed Text
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
        elementFormDefault="qualified"
        targetNamespace="http://demo.com/OrderXMLSchema_v1"
        xmlns:tns="http://demo.com/OrderXMLSchema_v1">
<xsd:element name="shipOrder" type="tns:shipOrder"></xsd:element>
  <xsd:complexType name="shipOrder">
    <xsd:sequence maxOccurs="1" minOccurs="1">
        <xsd:element name="orderperson" type="xsd:string" minOccurs="1" maxOccurs="1"></xsd:element>
        <xsd:element name="order-description" type="xsd:string" minOccurs="1" maxOccurs="1"></xsd:element>
        <xsd:element name="items" type="tns:items" maxOccurs="1" minOccurs="1"></xsd:element>
        <xsd:element name="item-2" type="tns:item-2" maxOccurs="unbounded" minOccurs="1"></xsd:element>
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="items">
      <xsd:sequence maxOccurs="unbounded" minOccurs="1">
        <xsd:element name="item" minOccurs="1" maxOccurs="1">
          <xsd:complexType>
            <xsd:simpleContent>
                <xsd:extension base="xsd:string">
                  <xsd:attribute name="index" type="xsd:unsignedLong" />
                </xsd:extension>
            </xsd:simpleContent>
          </xsd:complexType>
        </xsd:element>
      </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="item-2">
      <xsd:sequence maxOccurs="1" minOccurs="1">
          <xsd:element name="title" type="xsd:string"/>
          <xsd:element name="note" type="xsd:string" minOccurs="0"/>
          <xsd:element name="quantity" type="xsd:positiveInteger"/>
          <xsd:element name="price" type="xsd:decimal"/>
      </xsd:sequence>
      <xsd:attribute name="index" type="xsd:unsignedLong" />
  </xsd:complexType>
</xsd:schema>

Xml文件

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
- Licensed Description.
<shipOrder xmlns="http://demo.com/OrderXMLSchema_v1"
   xmlns:server="http://demo.com/OrderXMLSchema_v1"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <orderperson>John Smith</orderperson>
  <order-description>This document is used for demo sxN#</order-description>
  <items>
      <item index="1">
        some potatoes
      </item>
      <item index="2">
        some tomatoes
      </item>
  </items>
      <item-2 index="1">
            <title>Hide your heart</title>
            <quantity>1</quantity>
            <price>9.90</price>
      </item-2>
      <item-2 index="2">
            <title>Hide your heart</title>
            <note>this is for testing note, it is not required</note>
            <quantity>1</quantity>
            <price>9.90</price>
      </item-2>
</shipOrder>

最后是我们的java代码

import java.io.File;
import java.io.UnsupportedEncodingException;
import javax.xml.transform.Source;
import javax.xml.transform.stream.StreamSource;
import javax.xml.validation.Schema;
import javax.xml.validation.SchemaFactory;
import javax.xml.validation.Validator;
import org.xml.sax.SAXException;
public class index="2">
            <title>Hide your heart</title>
            <note>this is for testing note, it is not required</note>
            <quantity>1</quantity>
            <price>9.90</price>
      </item-2>

其余部分基本类似,比较需要注意的是item类型,它有attribute也有value。

 <item index="2"> some tomatoes </item>

它的定义是

        <xsd:element name="item" minOccurs="1" maxOccurs="1">
          <xsd:complexType>
            <xsd:simpleContent>
                <xsd:extension base="xsd:string">
                  <xsd:attribute name="index" type="xsd:unsignedLong" />
                </xsd:extension>
            </xsd:simpleContent>
          </xsd:complexType>
        </xsd:element>
使用XSD验证XML本文简单介绍如何使用XSD验证自己的xml。项目中我们经常使用xml作为配置或者数据交互的文件格式,在解析XML前最好验证一下或者在生成xml文件后验证一下生成的文件格式是正确,这样可以避免解析时出现一些低级的xml文件不符合预定义格式的错误。CSDN无法正确显示这些xsd, xml以及java代码,如果需要请参考http://yqbjtu.blog.163.com/blog/s
现在的语言,如果不有那么一点OO的影子,都不好意思称之为语言了。在 XML 的语义约束方面,DTD虽然简单,但是功能不够强大,完全是直白的描述,于是又有了替代DTD的 XSD XML Schema Definition), XSD 引入了数据类型,提供了自定义数据类型的各种机制,甚至还能找到继承、多态等各种OO特征,然而学习起来也就相对复杂了,从这篇笔记开始学习一下 XSD 。 1、 XSD 文件是...
项目中遇到了需要对 xml 数据进行入库的需求,但是在入库之前需要利用 xsd 文件对 xml 的合法性进行 验证 。 在网上找代码,找到了 leizhimin 的BLOG ,将其整理。感谢博主分享代码。 import java .io.File; import java x. xml .parsers.SAXParser; import java x. xml .parsers.SAXParserFa
方法一:private boolean validate XML By XSD (String xml ) throws SAXException, UnsupportedEncodingException //建立schema工厂 SchemaFactory schemaFactory = SchemaFactory.newInstance("http:/
XML Schema 语言也称作 XML Schema 定义( XML Schema Definition, XSD ),作用是定义 XML 文档的合法构建模块,类似 DTD,但更加强大。作用有: ①定义可出现在文档中的元素 ②定义可出现在文档中的属性 ③定义哪个元素是子元素 ④定义子元素的次序 ⑤定义子元素的数目 ⑥定义元素是否为空,或者是否可包含文本 ⑦定义元素和属性的数据类型 ⑧定义元素和属性的默认值以及固定值
(1)定义一个ValidationEventHandle事件处理方法。 (2)创建 Xml ReaderSettings对象的实例。 (3)将ValidationEventHandle与 Xml ReaderSettings相关联 (4) 将 Xml ReaderSettings的ValidationType属性设置为Va... 下面以下 使用 VS2010为平台进行演示。 1.新建一个项目,然后在项目中添加 xml 架构文件(. xsd 结尾的文件),本示例是新建一个网站,在网站中新建项 XML 架构文件,后缀是. xsd ,命名为 XML Schema2. xsd 2.平台自动生成如下内容: 其中 xml ns在...
XML 文档的模式定义文件—— XSD XML Schema 的作用是定义 XML 文档的合法构建模块,类似 DTD。 XSD 是一个文本文件,独立于 XML 文档,其扩展名为. xsd XSD 的基本结构如下: <? xml version="1.0"?> < xsd :schema xml ns: xsd ="http://www.w3.org/ XML Schema"> </ xsd :schema> 命名空间是W3C推荐的 XML 的一项标准,用于限制 XML 文档中元素的属性和命名范围
XSD 文件 ( XML Schema 语言也称作 XML Schema 定义( XML Schema Definition, XSD )。 具体 使用 方法和定义请参看: http://www.w3school.com.cn/schema/index.asp java 自jdk1.5以上新增了SchemaFactory类 可以实现对 XSD 验证 的支持, 使用 起来也很方便。 以下代码可用在JDK1.5+
Castor是一个开源框架,它能够将 XML 文档转换为 Java 对象,并且还能够将 Java 对象转换为 XML 文档。在Castor中, XSD XML Schema Definition)是把 XML 文件的结构定义为 Java 对象的标准,它定义了 XML 文件中的元素、属性与类型等内容,就像 Java 中的类一样,每一个 XML 文件就相当于一个实例。 Castor提供了一个 XSD 2 Java 的工具,可以方便地将 XSD 文件转换为 Java 类。这个工具可以在控制台中执行,也可以写成Ant脚本来执行。 使用 Castor进行 XSD 转Bean的步骤如下: 1. 编写 XSD 文件,定义 XML 文件的元素、属性和类型等内容。 2. 使用 XSD 2 Java 工具,将 XSD 文件转换为 Java 类。 3. 创建一个Castor的UnMarshaller对象,并将 XML 文件解析为 Java 类的实例。 4. 使用 Castor的Marshaller对象,将 Java 类转换为 XML 文档。 Castor能够快速地将 XSD 文件转换为 Java 类,并且支持复杂数据类型的转换,例如 XML Schema的simpleType和complexType。在Castor中, Java 类的字段和 XML 文档的节点是一一对应的,因此,在 使用 Castor进行 XSD 转Bean时,需要仔细检查 XSD 文件中定义的每一个元素、属性和类型与 Java 类中的每一个字段是否一致。 总之,Castor是一个强大的 XML 处理工具,它能够方便地进行 XSD 转Bean操作,并且同时支持 Java XML 之间的相互转换。