我爱编程

Java 基础 52 XML概述与XML文件的编写

2018-03-10  本文已影响26人  小熊先生很不开心

1.1 XML语言的概述

1.1.1 XML介绍

xml语言是具有结构性的标记语言, 可以灵活的存储一对多的数据关系.

graph TD
    A[中国]-->B[北京] 
    A[中国]-->C[山东]
    A[中国]-->D[湖北]
    B-->E[丰台]
    B-->F[海淀]
    C-->J[济南]
    C-->H[青岛]
    D-->D1[武汉]
    D-->D2[荆州] 

  以上这种数据, 如果通过我们学习的集合来存储的话, 需要通过多个集合的嵌套使用.
那么很显然, 数据存储的过程就非常麻烦, 但是我们今天所学习的xml文件就可以很简单的存储这种一对多的数据
至于怎样存储, 我们稍后会详细讲解, 目前需要掌握的是关于xml的使用场景

用来存储一对多的数据

另外, xml还有一些其他的应用方面:

  之前学习过properties配置文件, 通过这种配置文件, 可以使代码的编写更加灵活.
但是这种配置文件也只能存储一个键值对的映射关系, 如果需要存储多个呢?
没错, 可以使用xml , 所以xml的另一方面应用就展示出来了

用来当做配置文件存储数据

1.1.2 问题: xml文件是用来做什么的

核心思想:
答:存储数据
延伸问题: xml是怎样存储数据的?

答:以标签的形式存储  
例:  <name>Jack</name>


1.2 XML的文档声明

1.2.1 XML文件的组成部分

1.2.2 文档声明

格式

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

    xml表示标签的名字
    version表示当前文件的版本号
    encoding表示当前编码, 需要跟文件的编码产生对应关系

    ps: standalone表示标记此文档是否独立
        了解即可

1.3 XML的元素

1.3.1 什么是元素? 元素该如何编写?

   
<student>
   <name>zhangsan</name>
   <age>18</age>
</student>
   
<student name="zhangsan" age="18"/>

  两种方式都需要掌握, 但是第二种编写起来会更加方便

1.3.2 标签(元素的书写规范)

1.3.3 元素中属性的注意事项

举例

<?xml version="1.0" encoding="UTF-8"?>
<students>
    <student name="zhangsan" age="18" />
    
    
    <student>
        <name>zhangsan</name>
        <age>18</age>
    </student>
</students>

1.4 XML的注释

1.4.1 格式编写

格式

<!—被注释的内容 -- >

1.4.2 注意事项

1.5 引入CDATA区

1.5.1 概述

如何转义?

特殊字符 替代字符
& &amp;
< &lt;
> &gt;
" &quot;
' &apos;

注意:

1.5.2 实例代码

<?xml version="1.0" encoding="UTF-8"?>
<!-- 
    如果有一个包含标签体的标签,
    他的标签体是一个普通文本,不是子标签,
    而普通文本中包含了一个标签,那这样可以吗?
-->

<students>
    <student>
        <name>zhangsan</name>
        <url>
            <![CDATA[
                <itheima>www.itheima.com</itheima>
                <itcast>www.itcast.cn</itcast>
            ]]>
        </url>
    </student>
    
    
    <student>
        <name>zhangsan</name>
        <url>
            &lt;itheima&gt;www.itheima.com&lt;/itheima&gt;
        </url>
    </student>
</students>

1.6 DTD书写规范

1.6.1 为什么要有约束 (DTD)?

1.6.2 DTD约束文件的使用

<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT 书架(书+)>
    <!ELEMENT 书 (书名,作者,售价)>
    <!ELEMENT 书名 (#PCDATA)>
    <!ELEMENT 作者 (#PCDATA)>
    <!ELEMENT 售价 (#PCDATA)>
<!DOCTYPE 书架 SYSTEM "book.dtd">

  引入了写好的DTD文件后, 格式就必须跟DTD文件保持一致

1.6.3 DTD 语法细节

在DTD文档中使用ELEMENT关键字来声明一个XML元素。

1.6.4 DTD 定义属性

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

1.6.5 实例代码


<!ATTLIST 商品
        类别 CDATA #REQUIRED
        颜色 CDATA #IMPLIED
>
<?xml version = "1.0" encoding="GB2312" standalone="yes"?>
    <商品 类别="服装"颜色="黄色" />

<?xml version = "1.0" encoding="GB2312" standalone="yes"?>
<!DOCTYPE 购物篮 [
   <!ELEMENT 购物篮 (肉+)>
    <!ELEMENT 肉 EMPTY>
    <!ATTLIST 肉 品种 ( 鸡肉 | 牛肉 | 猪肉 | 鱼肉 ) "鸡肉">
]> 
<购物篮>
    <肉 品种="鱼肉"/>
    <肉 品种="牛肉"/>
    <肉/>
</购物篮>

1.7 Schema的概述

1.7.1 Schema

  Schema约束自身就是一个XML文件,但它的扩展名通常为.xsd

  一个XML Schema文档通常称之为模式文档(约束文档),遵循这个文档书写的xml文件称之为实例文档。
  XML Schema对名称空间支持得非常好

1.7.2 Schema入门案例

约束文档:

<?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"
                xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                xsi:schemaLocation="http://www.itheima.com book.xsd">
    <itheima:书>
        <itheima:书名>JavaScript网页开发</itheima:书名>
        <itheima:作者>张孝祥</itheima:作者>
        <itheima:售价>28.00元</itheima:售价>
    </itheima:书>
</itheima:书架>


名称空间:
<itheima:书架 xmlns:itheima="http://www.itheima.com"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.itheima.com book.xsd">

1.7.3 使用默认名称空间

•基本格式:
    xmlns="URI"  
•举例:
    <书架 xmlns="http://www.it315.org/xmlbook/schema"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.it315.org/xmlbook/schema book.xsd">
        <书>
        <书名>JavaScript网页开发</书名>
        <作者>张孝祥</作者>
        <售价>28.00元</售价>
        </书>
    <书架>

上一篇 下一篇

猜你喜欢

热点阅读