schema约束SAX

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了schema约束SAX相关的知识,希望对你有一定的参考价值。

schema约束

特点:- schema符合xml的语法,里面写的是xml语句,与dtd约束不同,dtd是自成一派

-          一个xml中可以有多个schema,多个schema使用名称空间区分

-          dtd里面有PCDATA等类型,但是在schema里面可以支持更多的数据类型,比如年龄只能是整数,schema可以严格的规定整数类型

-          但是schema语法更加复杂,还无法代替dtd

 

快速入门

1、创建一个schema文件,后缀名是.xsd

   根节点:<shema>

在schema文件里面的属性

xmlns=http://www.w3.org/2001/XMLSchema  表示当前是一个约束文件

targetNameSpace=http://www.itcast.cn/20151111使用schema约束文件,直接通过地址引入约束文件

elementFormDefault=“qualified”

2、步骤

-          看xml中有多少个元素,有几个就写几个<element>

-          看是否是简单元素或者复杂元素,简单元素写在复杂元素的里面

如 <element name =“person”>

   <complexType>

<sequence>

        <element name =“name” type=“string”></element>

        <element name=“age” type =“ing”></element>

</sequence>

</complexType>

</element>

3、在被约束文件里面引入约束文件

 如<person xmlns:xsi=“http://www.w3.org/2001/XMLSchema”  xmlns=“http://www.itcast.cn/20151111” xis:schemaLocation=“http://www.itcast.cn/20151111” 1.xsd>

** xmlns:xsi=“http://www.w3.org/2001/XMLSchema”表示xml是一个被约束文件

** xmlns=“http://www.itcast.cn/20151111”是约束文档里面的targetNameSpace

** xis:schemaLocation=“http://www.itcast.cn/20151111” 1.xsd

                   格式:targetNamespace 空格 约束文档的路径   

<sequence>:表示元素按照顺序出现

<all>:表示元素只能出现一次

<choice>:表示元素只能出现其中一个

maxOccurs=“unbounded”:表示元素出现的次数无限制

<any>:表示任意元素

 约束属性,写在复杂元素里面,位置 </complexType>之前

 <attribute name =“id1” type=“int” use=“required”> </attribute>

name:属性名称  type:属性类型  use:属性是否必须出现

 

SAX解析

  -SAXParser  通过SAXParserFactory.new SAXParser()方法获得

- parse(File f,DefaultHandler )  路径,事件处理器

startElement(String url, String location, String qname, Attributes attribute )

characters(char[] ch ,int start, int length)

endElement(String url, String location, String qname)

 - SAXParserFactory 方法 newInstance

4、使用jaxp的sax方式解析xml

sax方式不能实现增删改操作,只能进行查询操作

 -1、创建解析器工厂

 -2、创建解析器

 -3、执行parse方法

 -4、自己创建一个类,继承DefaultHandler

  5、重写继承的3个方法:startElement、characters、endElement

  6、获取所有的name元素的值

-定义一个成员变量 flag=false

-判断开始放松是否是name元素,如果是name元素,把flag设置为true

-如果flag值是true,在characters方法里面打印内容

-当执行到结束方法时候,把flag设置为true

  7、获取第一个name元素的值

   -定义一个成员变量 inx=1

   -在结束方法时候,idx+1 idx++

   -想要打印出第一个name元素的的值

       在characters方法里面判断

       判断flag=true 并且idx==1,再打印内容

以上是关于schema约束SAX的主要内容,如果未能解决你的问题,请参考以下文章

xml约束技术---schema

如何在xml中生成schema约束

SCHEMA约束

WebService . Schema约束

schema约束SAX

Spring怎么查找xml和schema约束