xml:可擴展的標記語言,它與html最大不一樣,在於標籤能夠擴展,html它關注的是外觀,而xml關注是結構css
xml大量用於數據交換,在開發中,對於不一樣系統之間須要傳遞數據,那麼就會大量使用xml技術(微信開發中也用到了xml進行傳遞數據)html
xml大量運用在服務器的配置文件中,xml還會運用在框架的配置文件(mybatis,spring,springboot等)web
xml:eXtensible Markup Language(可擴展標記語言),可擴展標記語言XML是SGML的子集,其目標是容許普通的SGML在Web上以目前HTML的方式被服務、接受和處理。XML被設計成易於實現,且可在SGML和HTML之間互相操做(W3C XML工做組對XML的定義)。spring
簡單看一看數據結構:editplus、sublimesql
ide:ecipse、webstorm、Altova XMLSpyspringboot
<?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>
語法:服務器
<?xml version = "1.0" encoding="utf-8"?>
注意實現:微信
xml的聲明通常位於xml文檔的第一行數據結構
version:版本號,目前爲止它的版本號就是1.0微信開發
encoding:文檔的編碼方式,通常咱們選擇utf-8
standalone:文檔定義類型是否在一個文件內 ,主要有兩個屬性值:yes,no
處理指令你們只須要了解便可
處理指令以<?開始,?>結束
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; }
語法:
<!DOCTYPE catalog SYSTEM "URL">
文檔定義類型必須在xml聲明以後,它規定xml的結構組成,包含全部的屬性、元素、實體等聲明
常見的文檔類型:
DTD: struts二、mybatis
Schema: spring3以上的版本都採用Schema
語法:
<!--this is comment-->
在xml中,註釋的語法和html是同樣的,在註釋中不能出現--
不要把註釋放在標籤的中間
註釋是不能夠嵌套的
能夠在除了標記之外的任何地方加註釋
一、每個xml文檔必須有且只有一個根元素
二、根元素是一個包括文檔中其它全部元素的元素
三、根元素的起始標記要放在全部其它元素的起始標記以前,根元素的結束標記要放在全部其它元素的結束標記以後
語法:
<name>關羽</name>
元素與元素其實是有關係的:子元素與父元素,兄弟關係、祖先與後代的關係
元素內容的類型:嵌套元素、字符數據、實體引用、CDATA節、註釋...
語法:
<skill id="one"> <sname>一騎當千</sname> <info> 被動:關羽每主動移動100距離將增長2%移動速度;持續移動達到2000距離時會進入衝鋒姿態;當關羽的移動速度被減小至375點如下或受到控制效果時將退出衝鋒姿態;關羽面朝敵方移動時將增長20%移動速度;衝鋒姿態:關羽的普通***會擊退敵人並附帶10%最大生命值的物理傷害 </info> </skill>
在xml中屬性可使用雙引號或者單引號分割
一個元素中能夠有多個屬性,屬性與屬性之間經過空格進行分割
在同一個標記中,不能出現同名的屬性
屬性和元素的區別:
屬性和元素一樣能夠描述數據
屬性不能有多個值,元素能夠
屬性沒法創建文件結構,可是元素能夠,在程序處理上,使用元素要比使用屬性易於處理
定義實體的語法
<?xml version = "1.0" encoding="utf-8"?> <!DOCTYPE heros[ <!--String msg = "南京烽火科技信息技術有限公司"--> <!--System.out.println(msg)--> <!ENTITY info "南京烽火科技信息技術有限公司"> ]> <heros> &info; </heros>
實體能夠幫助咱們將一些經常使用的內容經過佔位符的方式進行定義,在xml中實際上內置了5個實體,咱們能夠直接 使用
< > & " '
PCDATA:就是元素中的字符數據,只不過這個數據會被解析器解析
CDATA節:也是字符數據,可是不會被解析器解析,裏面的內容會原樣輸出
語法:
<![CDATA[ 關羽> ]]>
CDATA節:之後你們學習到mybatis框架的時候,後期的sql文件都是封裝到xml中或者採用註解的形式,那麼若是封裝到xml中,那麼你們之前的sql中確定存在大於號或者小於號,此時若是直接使用PCDATA你就必須人爲的進行轉義操做,那麼若是使用CDATA節,就可以很好的避免這個問題
任何一個xml文檔都必須經過文檔解析器進行解析操做
有效的xml文檔必須符合文檔類型定義的要求,那麼常見文檔定義類型有2種 :DTD、Schema