XML学习笔记(一)

1、xml简介

1.1、为什么要学习xml

xml:可扩展的标记语言,它与html最大不同,在于标签可以扩展,html它关注的是外观,而xml关注是结构

xml大量用于数据交换,在开发中,对于不同系统之间需要传递数据,那么就会大量使用xml技术(微信开发中也用到了xml进行传递数据)

xml大量运用在服务器的配置文件中,xml还会运用在框架的配置文件(mybatis,spring,springboot等)

mark

1.2、什么是xml

xml:eXtensible Markup Language(可扩展标记语言),可扩展标记语言XML是SGML的子集,其目标是允许普通的SGML在Web上以目前HTML的方式被服务、接受和处理。XML被设计成易于实现,且可在SGML和HTML之间互相操作(W3C XML工作组对XML的定义)。

mark

1.3、开发xml的工具

简单看一看数据结构:editplus、sublime

ide:ecipse、webstorm、Altova XMLSpy

1.4、编写第一个xml程序

<?xml version = "1.0" encoding="utf-8"?>
<heros>
    <hero>
        <name>关羽</name>
        <skills>
            <skill>
                <sname>一骑当千</sname>
                <info>
                    被动:关羽每主动移动100距离将增加2%移动速度;持续移动达到2000距离时会进入冲锋姿态;当关羽的移动速度被减少至375点以下或受到控制效果时将退出冲锋姿态;关羽面朝敌方移动时将增加20%移动速度;冲锋姿态:关羽的普通***会击退敌人并附带10%最大生命值的物理伤害
                </info>
            </skill>
            <skill>
                <sname>单刀赴会</sname>
                <info>
                    关羽旋转大刀队附近的敌人造成215/430/645/860/1075/1290(+127%物理加成)点物理伤害;冲锋姿态:关羽向前发起冲锋造成(100%物理加成)(10%最大生命值)点物理伤害,并在结束时向前劈砍,造成250/500/750/1000/1250/1500(+150%物理加成)点物理伤害
                </info>
            </skill>
        </skills>
    </hero>
</heros>

2、xml的语法

mark

2.1、xml的声明

语法:

<?xml version = "1.0" encoding="utf-8"?>

注意实现:

xml的声明一般位于xml文档的第一行

version:版本号,目前为止它的版本号就是1.0

encoding:文档的编码方式,一般我们选择utf-8

standalone:文档定义类型是否在一个文件内 ,主要有两个属性值:yes,no

2.2、pi(处理指令)(知道就行了)

处理指令大家只需要了解即可

处理指令以<?开始,?>结束

xml中,我们依然可以为xml的数据添加样式,但是这个是我们不推崇,因为xml关注是数据的结构

<?xml version = "1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/css" href="heros.css"?>
<heros>
    <hero>
        <name>关羽</name>
        <skills>
            <skill>
                <sname>一骑当千</sname>
                <info>
                    被动:关羽每主动移动100距离将增加2%移动速度;持续移动达到2000距离时会进入冲锋姿态;当关羽的移动速度被减少至375点以下或受到控制效果时将退出冲锋姿态;关羽面朝敌方移动时将增加20%移动速度;冲锋姿态:关羽的普通***会击退敌人并附带10%最大生命值的物理伤害
                </info>
            </skill>
            <skill>
                <sname>单刀赴会</sname>
                <info>
                    关羽旋转大刀队附近的敌人造成215/430/645/860/1075/1290(+127%物理加成)点物理伤害;冲锋姿态:关羽向前发起冲锋造成(100%物理加成)(10%最大生命值)点物理伤害,并在结束时向前劈砍,造成250/500/750/1000/1250/1500(+150%物理加成)点物理伤害
                </info>
            </skill>
        </skills>
    </hero>
</heros>

heros.css:

info{
    color:red;
    font-size:15px;
}

2.3、文档定义类型

语法:

<!DOCTYPE catalog  SYSTEM "URL">

文档定义类型必须在xml声明之后,它规定xml的结构组成,包含所有的属性、元素、实体等声明

常见的文档类型:

​ DTD: struts2、mybatis

​ Schema: spring3以上的版本都采用Schema

2.4、注释

语法:

<!--this is comment-->

在xml中,注释的语法和html是一样的,在注释中不能出现--

不要把注释放在标签的中间

注释是不可以嵌套的

可以在除了标记以外的任何地方加注释

2.5、xml文档的根元素

1、每一个xml文档必须有且只有一个根元素

2、根元素是一个包括文档中其它所有元素的元素

3、根元素的起始标记要放在所有其它元素的起始标记之前,根元素的结束标记要放在所有其它元素的结束标记之后

2.6、元素

语法:

<name>关羽</name>

元素与元素实际上是有关系的:子元素与父元素,兄弟关系、祖先与后代的关系

元素内容的类型:嵌套元素、字符数据、实体引用、CDATA节、注释...

2.7、属性

语法:

<skill id="one">
                <sname>一骑当千</sname>
                <info>
                    被动:关羽每主动移动100距离将增加2%移动速度;持续移动达到2000距离时会进入冲锋姿态;当关羽的移动速度被减少至375点以下或受到控制效果时将退出冲锋姿态;关羽面朝敌方移动时将增加20%移动速度;冲锋姿态:关羽的普通***会击退敌人并附带10%最大生命值的物理伤害
                </info>
</skill>

在xml中属性可以使用双引号或者单引号分割

一个元素中可以有多个属性,属性与属性之间通过空格进行分割

在同一个标记中,不能出现同名的属性

属性和元素的区别:

属性和元素同样可以描述数据

属性不能有多个值,元素可以

属性无法建立文件结构,但是元素可以,在程序处理上,使用元素要比使用属性易于处理

2.8、xml中的实体

定义实体的语法

<?xml version = "1.0" encoding="utf-8"?>
<!DOCTYPE heros[
<!--String msg = "南京烽火科技信息技术有限公司"-->
<!--System.out.println(msg)-->
<!ENTITY info "南京烽火科技信息技术有限公司">
]>
<heros>
    &info;
</heros>

实体可以帮助我们将一些常用的内容通过占位符的方式进行定义,在xml中实际上内置了5个实体,我们可以直接 使用

<
>
&
"
'

2.9、xml中的元素内容

PCDATA:就是元素中的字符数据,只不过这个数据会被解析器解析

CDATA节:也是字符数据,但是不会被解析器解析,里面的内容会原样输出

语法:

<![CDATA[
        关羽>
]]>

CDATA节:以后大家学习到mybatis框架的时候,后期的sql文件都是封装到xml中或者采用注解的形式,那么如果封装到xml中,那么大家以前的sql中肯定存在大于号或者小于号,此时如果直接使用PCDATA你就必须人为的进行转义操作,那么如果使用CDATA节,就能够很好的避免这个问题

3、格式正规的xml和有效的xml文档

3.1、文档解析器

任何一个xml文档都必须通过文档解析器进行解析操作

mark

3.2、格式正规的xml文档

mark

3.3、有效的xml文档

有效的xml文档必须符合文档类型定义的要求,那么常见文档定义类型有2种 :DTD、Schema

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章