schema约束(day06)

1)schema约束

        dtd语法:<!ELEMENT 元素名称 约束>

        schema  符合xml的语法,xml语句

        一个xml中可以有多个schema,多个schema使用名称空间区分(类似于java包名)

        dtd里面有PCDATA类型,但是在schema里面可以支持更多的数据类型。比如 年龄 只能是整数,在schema可以直接定义一个整数类型

        【schema语法相比dtd语法更加复杂】

2)schema的快速入门

        schema的开发过程图

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

        在schema文件里面
                属性    xmlns="http:// www.w3.org/2001/XMLSchema"
                            - 表示当前xml文件是一个约束文件
                targetNamespace = "http://www.example.org/1"
                            - 使用schema约束文件,直接通过这个地址引用约束文件
                elementFormDefault = "qualified"

        步骤
                I. 看xml中有多少个元素        
                    <element>

                II. 看它是简单元素还是复杂元素
                        如果是复杂元素
                            <complexType>    <sequence>  子元素
                            </sequence>   </complexType> 

                III. 简单元素,需要写在复杂元素内
                        例如:

                IV.  在被约束文件里面引入约束文件

** xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" -- 表示xml是一个被约束文件 ** xmlns = "http://www.example.org/1" -- 是约束文档里面 targetNamespace ** xsi:schemaLocation="http://www.example.org/1 1.xsd" -- targetNamespace 空格 约束文档的地址路径

<sequence>:表示元素的出现的顺序
<all>:表示元素只能出现一次
<choice>:表示只能出现下列元素中的其中一个
maxOccurs:在标签内使用,表示元素能够出现的最大次数 maxOccurs = "unbounded" 表示不限次数
<any></any>:表示任意元素

        可以约束属性
                需要写在复杂元素里面,写在</complexType>之前

        复杂的schema约束

        引入多个schema文件,可以给每个起一个别名

3)sax解析的原理(★★★★★)

        解析xml有两种技术    dom 和 sax

        在java.xml.parsers包里面
                **  SAXParser
                        此类的实例可以从    SAXParserFactory.newSAXParser() 方法获得
                        - parse(File f, DefaultHandler dh)    两个参数
                            第一个参数:xml的路径
                            事件处理器

                **  SAXParserFactory
                        实例:newInstance()  方法得到

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

        sax方法不能实现增删改查,只能做查询操作

        打印出整个文档

        执行parse方法,第一个参数xml路径,第二个参数是事件处理器
              **  创建一个类,继承事件处理器的类
              **  重写里面的三个方法

        示例I:获取到所有的name元素值

        示例II:获取到第一个name元素的值

5)使用dom4j解析xml(★★★★★)

        * dom4j,是一个组织,针对xml解析,提供解析器    dom4j

        * dom4j不是javase的一部分,想要使用第一步需要怎么做呢?
                **  导入dom4j提供jar包
                ——  创建一个文件夹,将jar包复制到文件夹内,右键jar包,build  path —— add  to  build  path

        * 得到document
                SAXReader reader = new SAXReader();
                Document document = reader.read(url);

        * document的父接口是Node
                * 如果在document里面找不到相应的方法,到Node里面去找

        * document里面的方法 getRootElement():获取根节点 返回的是element

        * Element也是一个接口,父接口也是Node
                - Element  和  Node  内的方法
                **  getParent()    获取父节点
                **  addElement()    添加标签
                        * element(qname)
                                ** 表示获取标签下面的该名称的第一个子标签
                                ** qname标签名称
                        * elements(qname)
                                **  表示获取标签下面该名称的所有子标签(一层)
                        * elements()
                                ** 表示获取标签下面的所有子标签(一层)

6)使用dom4j查询xml

    * 解析是从上到下解析的
    * 查询所有name元素的值

    * 查询第一个name元素的值

    * 查询第二个name元素的值

7)使用dom4j实现添加操作(★★★★★)

    * 在第一个p1标签末尾给它添加一个元素 <sex>nv</sex>

8)使用dom4j在特定位置添加元素(★★★★★)

    * 在第一个p1标签下面的age标签之前添加<school>sdlg</school>

        **  可以对得到 document的操作和回写 xml的操作,进行封装
        **  也可以把传递的文件路径,封装成一个常量
        ***  好处:可以提高开发速度,可以提高代码可维护性

9)使用dom4j实现修改节点的操作(★★★★★)

    * 修改第一个p1下面的age元素的值

10)使用dom4j实现删除节点的操作(★★★★★)

    * 删除第一个p1下面的school元素

11)使用dom4j获取属性(★★★★★)

    * 获取第一个p1里面的属性id1的值

12)使用dom4j支持xpath的操作(★★★★★)

    * 可以直接获取到某个元素

13)使用dom4j支持xpath具体操作(★★★★★)

        **  默认情况下,dom4j不支持xpath

        ** 如果想要在dom4j里面是有xpath
                *  第一步需要,引入支持xpath的jar包,使用 jaxen-1.1-beta-6.jar (D:\\develop\\Myspace\\...\\lib)
                **  需要把jar包导入到项目中

        **  在dom4j里面提供了两个方法,用来支持xpath
                ***  selectNodes("xpath表达式")    -  获取多个节点
                ***  selectSingleNode("xpath表达式")    -  获取一个节点

        **  使用xpath实现:查询xml中所有name元素的值
                所有name元素的xpath表示://name
                使用selectNodes("//name")

        **  使用xpath实现:获取第一个p1下面的name的值
                * //p1[@id1='aaaa']/name
                * 使用到 selectSingleNode("//p1[@id1='aaaa']/name")

14)实现简单的学生管理系统

        ** 使用xml当做数据库,存储学生信息

        **  创建一个xml文档,写一些学生信息

student类

        ** 增加操作

        ** 删除操作(通过学生id删除)

        ** 查询操作(通过学生id来查询)

推荐阅读更多精彩内容

  • schema约束 1.dtd语法:<!ELEMENT元素名称 约束>schema符合xml的语法,xml语句一个...
    拥心lyy阅读 412评论 0 0
  • 1.schema 约束 1.dtd 语法:<!ELEMENT 元素名称 约束> 2.schema符合 xml 的语...
    AitHim19阅读 327评论 0 0
  • day22_XML_XML约束 思维导图 复习 今日内容 XML XML约束 XML的学习 XML概念 XML的介...
    蹦蹦跶跶的起床啊阅读 160评论 0 0
  • 1.schema 约束 1.dtd 语法: 2.schema符合 xml 的语法,xml 语句3.一个 xml 中...
    定格r阅读 49评论 0 0
  • day5 一、表单提交方式 1.使用submit提交 2.使用button提交表单 3.使用超链接提交 4.onc...
    mwj610阅读 112评论 0 0