A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© 大蓝鲸Java 中级黑马   /  2018-6-22 12:14  /  690 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

【南京校区】xml详细分析

      xml文件在我们日常开发中启到了必不可少的作用。

     在很多框架比如hibernate,spring等,都是使用xml作为了配置文件,所以学习xml成为了我们学习过程中比不可少的一个方面。

(一)xml首先要有文档申明。

    <?xml version='1.0' encoding='UTF-8'?>

    第一行固定格式,单引号和双引号通用。但是一般写成双引号。

   只能放在第一行,上面连注释都不能有

        xml表示标签的名字

        version表示当前文件的版本号

        encoding表示当前编码, 需要跟文件的编码产生对应关系//默认UTF-8


(二)基本语法

    xml的元素//就是一个个的标签

                标签分为两种:

                        包含标签体

                    <student>

                        <name>zhangsan</name>        // 或者叫子元素

                        <age>18</age>

                    </student>


            不包含标签体

                    <student

                        name="zhangsan"                        //这个叫做属性

                        age="18"

                    />


"注意:"

        标签可以嵌套,比如包含表标签体的标签

        但是标签不能交叉嵌套

        最外层只能有一个根标签


命名规范:
        区分大小写        <p><P>
        字母或下划线开头        abc _abc
        不能以xml(或XML、Xml等)开头----W3C保留日后使用;
        不能有空格或制表符;
        不能使用冒号 :        (有特殊用途)

注释:
        <!—        被注释的内容 -->        //注释不能嵌套
                                                        //可以使用eclipse的多行注释的快捷键


CDATA区
        <![CDATA[  ...  ]]>        //将CDATA区里面的东西进行原样输出



(三)DTD约束
    DTD                //看懂即可
                //已经被Schema全面替代了
        用来约束xml文件中 标签的名称,属性,顺序,次数等。


"要求掌握"
1,如何把DTD拷贝到项目中
2,如何根据DTD自动生成xml文件




<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT 书架(书+)>                //根标签 书架  子标签 书    出现1次或多次
        <!ELEMENT 书 (书名,作者,售价)> //书这个子标签 中有三个子标签 书名,作者,售价 逗号间隔,顺序不能乱。1次。
        <!ELEMENT 书名 (#PCDATA)>        //#PCDATA        可以有标签体,文本。
        <!ELEMENT 作者 (#PCDATA)>
        <!ELEMENT 售价 (#PCDATA)>


写xml之前,需要引入DTD文件
引入格式:
<!DOCTYPE 书架 SYSTEM "book.dtd">//"book.dtd" 可以写路径
        引入了写好的DTD文件后, 格式就必须跟DTD文件保持一致

        
        语法细节
                在DTD文档中使用ELEMENT关键字来声明一个XML元素。
                        语法:<!ELEMENT 元素名称 (使用规则)>

                使用规则:
                        
                        标签体的规则:
                                        (#PCDATA):指示元素的主体内容只能是普通的文本.(Parsed Character Data)
                                        EMPTY:用于指示元素的主体为空。即没有子标签。比如<br/>
                                        ANY:用于指示元素的主体内容为任意类型。


                        (子元素):指示元素中包含的子元素
                        定义子元素及描述它们的关系:
                        
                                        逗号,说明必须按照声明顺序去编写XML文档。
                                                如: <!ELEMENT FILE (TITLE,AUTHOR,EMAIL)
                                        "|",说明任选其一。
                                                如:<!ELEMENT FILE (TITLE|AUTHOR|EMAIL)


                                        用+、*、?表示元素出现的次数
                                                如果元素后面没有+*?:表示必须且只能出现一次
                                                +:一次或多次
                                                *:零次、一次或多次
                                                ?:零次或一次



                        属性规则:
                                在DTD文档中使用ATTLIST关键字来为一个元素声明属性。
                                语法:
                                        <!ATTLIST 元素名
                                                属性名1 属性值类型 设置说明
                                                属性名2 属性值类型 设置说明
                                                …
                                        >
                                属性值类型:
                                        CDATA:表示属性的取值为普通的文本字符串
                                        ENUMERATED (DTD没有此关键字):表示枚举,只能从枚举列表中任选其一,如(鸡肉|牛肉|猪肉|鱼肉)
                                        ID:表示属性的取值不能重复
                                设置说明
                                        #REQUIRED:属性必须出现
                                        #IMPLIED:属性可有可无
                                        #FIXED:        属性的取值为一个固定值。语法:#FIXED "固定值"
                                        直接值:属性的取值为该默认值
                          

        实例代码1
                //约束
                <!ATTLIST 商品
                                类别 CDATA #REQUIRED //CDATA 文本 #REQUIRED必须出现
                                颜色 CDATA #IMPLIED         //#IMPLIED 可有可无
                >

                <?xml version = "1.0" encoding="GB2312" standalone="yes"?>
                <商品 类别="服装"颜色="黄色" />


        实例代码2
                <?xml version = "1.0" encoding="GB2312" standalone="yes"?>
                <!DOCTYPE 购物篮 [        //根标签是购物篮
                   <!ELEMENT 购物篮 (肉+)>        //购物篮里面有标签肉 一次或者多次
                        <!ELEMENT 肉 EMPTY>                //元素没有子标签
                        <!ATTLIST 肉 品种 ( 鸡肉 | 牛肉 | 猪肉 | 鱼肉 ) "鸡肉">//肉的属性
                ]>
                <购物篮>
                        <肉 品种="鱼肉"/>
                        <肉 品种="牛肉"/>
                        <肉/>                //没有给值,就是后面的默认值 鸡肉        
                </购物篮>

(四) Schema 约束
    Schema约束自身就是一个XML文件,但它的扩展名通常为.xsd
        一个XML Schema文档通常称之为模式文档(约束文档),遵循这个文档书写的xml文件称之为实例文档。
        XML Schema对名称空间支持得非常好

理解:
        名称空间: 相当于package                        
约束文档: 编写好的Person类                 
        实例文档: 通过Person类创建对象


针对一个schema约束文档生成一个xml
        右键新建一个xml File --- 点 next --- 定义一个xml文件名
                                                 --- 点 next --- 选择第二个,使用一个schema约束生成一个xml
                                                 --- 点 next --- 选择schema约束
                                                 --- 点 next --- 可以更改别名
                                                 --- 点击 finish


约束文档:

<?xml version='1.0' encoding='UTF-8' ?>
<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema'  //标准的名称空间
                                          targetNamespace='http://www.itheima.com'//将该schema文档绑定到http://www.itheima.com名称空间
                                >
        <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"?>
<itheima:书架 xmlns:itheima="http://www.itheima.com"        //itheima 别名
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"//标准的名称空间的一个对象
        xsi:schemaLocation="http://www.itheima.com book.xsd ">//名称空间 空格 约束文档的文件名
        <书>
                <书名>书名</书名>
                <作者>作者</作者>
                <售价>售价</售价>
        </书>
</itheima:书架>


(五)综上所述
    其实xml作为配置文件在实际开发中大量使用,但是我们也仅仅要会如何根据约束来创建出对于的xml文件即可。
    这在eclipse或者idea里面都有自动提示的方式,所以我们也要多多利用开发工具。





0 个回复

您需要登录后才可以回帖 登录 | 加入黑马