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

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