XML

作者: 打死你的小乌龟 | 来源:发表于2018-09-07 16:56 被阅读0次

    xml语法
    XML标记文本,用来描述数据的性质和结构,严格区分大小写,有且只能有一个根元素,属性值必须放在 引号中,空格不会自动删除,标记可以随便定义并且可拓展

    一个完整的XML文档中必须包含一个XML文档声明该声明必须位于文档的第一行
    <? xml 版本信息 [编码信息][文档独立性信息]?>
    1.版本声明
    <? xml version="1.0" ?>
    2.文档编码声明
    <? xml version="1.0" encoding="gb2312"?>
    3.独立文档声明
    standalone="yes";独立文档不依赖外部文档
    standalone="no"
    <? xml version="1.0" encoding="gb2312" standalone="yes"?>
    特殊字符处理
    特殊字符

    &-----&amp
    <-----&lt
    >-----&gt
    "------&quot
    '-------&apos
    

    CDATA区
    是Character data的简写不想被程序解析的一段原数据可以放在CDADA中
    用法
    <![CDATA[ &^*s!@#$]]>

    XML的解析方式概述

    1、解析方式:(W3C)
    DOM:Document Object Model文档对象模型
    Node:节点
    Document:代表整棵树
    Element:元素
    Attr:属性(只有元素才有属性)
    Text:文本
    有点:增删改查方便,简单
    缺点:需要读取整个xml才能构建DOM树。对于比较大的xml,容易导致内存溢出。
    l SAX:Simpl API for Xml

    利用JAXP开发包:DOM解析
    1、常用的XML解析器:
    JAXP、Dom4J、JDom
    2、JAXP:
    存在JDK中,SUN公司提供。
    Java API for XML Processing=JAXP
    由以下包:
    org.w3c.dom:标准和规范(学习规范)
    javax.xml:具体的实现

    dtd约束

    2、约束技术:DTD(简单,面临着淘汰) Schema
    3、DTD:
    约定了xml文件中可以出现的元素、属性等,及他们的顺序和个数。
    DTD约束,文件的扩展名.dtd
    4、编写DTD的方式:
    方式一:dtd内容和xml都在xml文件中
    直接把dtd的内容写在xml文件中。
    比如:

        <?xml version=”1.0” encoding=”gbk”?>
        <!DOCTYPE 书架[                
            <!ELEMENT 书架 (书+)>
            <!ELEMENT 书 (书名,作者,售价)>
            <!ELEMENT 书名 (#PCDATA)>
            <!ELEMENT 作者 (#PCDATA)>
            <!ELEMENT 售价 (#PCDATA)>          
        ]>
        <书架>
             
        </书架>
    

    方式二:dtd作为单独的文件存在(推荐)。文件扩展名.dtd,文件必须用UTF-8编码保存到磁上。

    根据它的语法创建的文件称为DTD文件

    1.<!ELEMEMT 书架(书+)>(书+)表示至少有一个书元素
    2.<!ELEMEMT 书(书名,作者,售价)>书是元素名称,(书名,作者,售价)是书的子元素必须按照顺序出现
    3.<!ELEMEMT 书名(#PCDATA)>
    4.<!ELEMEMT 作者(#PCDATA)>
    5.<!ELEMEMT 售价(#PCDATA)>#PCDATA普通文本字符串
    

    引入外部DTD文件有两种方式
    1.<!DOCTYPE 根元素名称 SYSTEM "外部DTD文件的URI">
    2.<!DOCTYPE 根元素名称 PUBLIC "DTD名称"SYSTEM "外部DTD文件的URI">
    还可以采用内嵌的方式
    <!DOCTYPE 根元素名称[
    DTD定义语句
    ]>
    EMPTY:表示元素不包含字符数据是一个空元素.<!ELEMEMT br EMPTY>br是一个没有内容的元素
    ANY:表示元素可以包含任意的子元素和字符数据<!ELEMEMT l联系人 ANY>

    属性定义

    <!ATTLIST 元素名
    属性名1 属性类型 设置说明
    属性名 2 属性类型 设置说明
    .>

    设置说明
    1.#REQUIRED
    元素属性是必须的
    2.#IMPLIED
    元素可以包含该元素
    3.#FIXED
    一个固定的属性默认值
    4.默认值
    如果元素不包含该元素,该属性将自动设置为DTD中定义的默认值
    属性类型
    1.CDATA
    2.Enumerated
    3.ID用于唯一标识XML文档中的一个元素
    4.IDREF和IDREFS可以使两个元素建立一对一的关系
    5.NOTATION不易用XML组织的数据
    6.NMTOKEN表示一种列表类型
    7.ENTITY和ENTITYS

    Schema约束

    名称空间
    唯一标识一个元素或者属性
    属性名称必须以xmlns:作为前缀<元素名 xmlns:prefixname="URL">
    默认名称空间<元素名 xmlns="URL">

    引入Schema文档
    1.使用名称空间引入XML Schema文档
    需要通过属性xsi:schemaLocation来声明名称空间的文档,
    2.不使用名称空间引入
    xsi:noNamespaceschemaLocation

    语法
    元素定义
    <xs:element name="xxx" type="yyy"/>
    属性定义
    <xs:attribute name="xxx" type="yyy"/>

    简单类型
    xs:simpleType
    限制xs:restriction
    xs:minInclusive,xs:maxInclusive对值的限定
    xs:enumeration元素对一组值的限定
    xs:pattern元素对一组值的限定
    xs:restriction元素对空白符的限定

    复杂类型
    xs:simpleContent

    XML中如何引入Schema约束(必须掌握)

    1、查看Schema文档,找出根元素


    2、根元素来自哪个名称空间
    查看Schema的文档,找到targetNamespace的取值,在xml中用xmlns关键字声明该名称空间。”itheima”就是给名称空间取了一个短名称。


    3、名称空间和哪个xsd文件对应?
    使用schemaLocation来制定名称空间和xsd文件的对应关系


    4、schemaLocation不是关键字,来自一个标准的名称空间

    XML中如何引入Schema约束
    <?xml version="1.0" encoding="UTF-8"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
        targetNamespace="http://www.hhh.com" elementFormDefault="qualified">
        <xs:element name='书架'>
            <xs:complexType>
                <xs:sequence maxOccurs='unbounded'>
                    <xs:element name='书'>
                        <xs:complexType>
                            <xs:sequence>
                                <xs:element name='书名' type='xs:string' />
                                <xs:element name='作者' type='xs:string' />
                                <xs:element name='售价' type='xs:string' />
                            </xs:sequence>
                        </xs:complexType>
                    </xs:element>
                </xs:sequence>
            </xs:complexType>
        </xs:element>
    </xs:schema>
    
    <?xml version="1.0" encoding="UTF-8"?>
    <hhh:书架 xmlns:hhh="http://www.hhh.com"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.hhh.com book.xsd">
        <hhh:书>
            <hhh:书名>故事</hhh:书名>
            <hhh:作者>哈哈</hhh:作者>
            <hhh:售价>10块</hhh:售价>
        </hhh:书>
    </hhh:书架>
    

    相关文章

      网友评论

          本文标题:XML

          本文链接:https://www.haomeiwen.com/subject/nlvcgftx.html