1. 程式人生 > >XML學習筆記(一)

XML學習筆記(一)

轉義 釋放 結束 ble 是我 方式 有限公司 的區別 w3c

本課程在線學習:https://edu.51cto.com/course/15238.html
1、xml簡介

1.1、為什麽要學習xml

xml:可擴展的標記語言,它與html最大不同,在於標簽可以擴展,html它關註的是外觀,而xml關註是結構

xml大量用於數據交換,在開發中,對於不同系統之間需要傳遞數據,那麽就會大量使用xml技術(微信開發中也用到了xml進行傳遞數據)

xml大量運用在服務器的配置文件中,xml還會運用在框架的配置文件(mybatis,spring,springboot等)

1.2、什麽是xml

xml:eXtensible Markup Language(可擴展標記語言),可擴展標記語言XML是SGML的子集,其目標是允許普通的SGML在Web上以目前HTML的方式被服務、接受和處理。XML被設計成易於實現,且可在SGML和HTML之間互相操作(W3C XML工作組對XML的定義)。

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的語法

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個實體,我們可以直接 使用

&lt;
&gt;
&amp;
&quot;
&apos;

2.9、xml中的元素內容

PCDATA:就是元素中的字符數據,只不過這個數據會被解析器解析

CDATA節:也是字符數據,但是不會被解析器解析,裏面的內容會原樣輸出

語法:

<![CDATA[
        關羽&gt;
]]>

CDATA節:以後大家學習到mybatis框架的時候,後期的sql文件都是封裝到xml中或者采用註解的形式,那麽如果封裝到xml中,那麽大家以前的sql中肯定存在大於號或者小於號,此時如果直接使用PCDATA你就必須人為的進行轉義操作,那麽如果使用CDATA節,就能夠很好的避免這個問題

XML學習筆記(一)