【XML】XML语法格式提要
XML語法規(guī)則綱要
- XML文檔必須有且只有一個根元素
- XML元素都必須有一個關(guān)閉標(biāo)簽
- XML標(biāo)簽對大小寫敏感
- XML元素必須被正確的嵌套
- XML屬性值必須加引號
XML文檔必須有且只有一個根元素
對于下面的XML文檔
<?xml version="1.0" encoding="UTF-8" ?> <SALES><ORDER><ORDERITEM><PRODUCT><CODE>A001</CODE><DESCRIPTION>Almond Flavored Syrup</DESCRIPTION><PRICE>9.0</PRICE></PRODUCT><QUANTITY>3</QUANTITY></ORDERITEM><ORDERITEM><PRODUCT><CODE>A002</CODE><DESCRIPTION>Irish Creme Flavored Syrup</DESCRIPTION><PRICE>9.0</PRICE></PRODUCT><QUANTITY>5</QUANTITY></ORDERITEM></ORDER><ORDER><ORDERITEM><PRODUCT><CODE>A001</CODE><DESCRIPTION>Almond Flavored Syrup</DESCRIPTION><PRICE>9.0</PRICE></PRODUCT><QUANTITY>1</QUANTITY></ORDERITEM><ORDERITEM><PRODUCT><CODE>A004</CODE><DESCRIPTION>Caramel Flavored Syrup</DESCRIPTION><PRICE>9.0</PRICE></PRODUCT><QUANTITY>2</QUANTITY></ORDERITEM><ORDERITEM><PRODUCT><CODE>A006</CODE><DESCRIPTION>Gourmet Coffee Travel Thermo</DESCRIPTION><PRICE>18.0</PRICE></PRODUCT><QUANTITY>3</QUANTITY></ORDERITEM></ORDER><ORDER><ORDERITEM><PRODUCT><CODE>A009</CODE><DESCRIPTION>Gourmet Coffee 36 Cup Filters</DESCRIPTION><PRICE>45.0</PRICE></PRODUCT><QUANTITY>100</QUANTITY></ORDERITEM></ORDER> </SALES>刪去根元素<SALES>:
<?xml version="1.0" encoding="UTF-8" ?> <ORDER><ORDERITEM><PRODUCT><CODE>A001</CODE><DESCRIPTION>Almond Flavored Syrup</DESCRIPTION><PRICE>9.0</PRICE></PRODUCT><QUANTITY>3</QUANTITY></ORDERITEM><ORDERITEM><PRODUCT><CODE>A002</CODE><DESCRIPTION>Irish Creme Flavored Syrup</DESCRIPTION><PRICE>9.0</PRICE></PRODUCT><QUANTITY>5</QUANTITY></ORDERITEM> </ORDER> <ORDER><ORDERITEM><PRODUCT><CODE>A001</CODE><DESCRIPTION>Almond Flavored Syrup</DESCRIPTION><PRICE>9.0</PRICE></PRODUCT><QUANTITY>1</QUANTITY></ORDERITEM><ORDERITEM><PRODUCT><CODE>A004</CODE><DESCRIPTION>Caramel Flavored Syrup</DESCRIPTION><PRICE>9.0</PRICE></PRODUCT><QUANTITY>2</QUANTITY></ORDERITEM><ORDERITEM><PRODUCT><CODE>A006</CODE><DESCRIPTION>Gourmet Coffee Travel Thermo</DESCRIPTION><PRICE>18.0</PRICE></PRODUCT><QUANTITY>3</QUANTITY></ORDERITEM> </ORDER> <ORDER><ORDERITEM><PRODUCT><CODE>A009</CODE><DESCRIPTION>Gourmet Coffee 36 Cup Filters</DESCRIPTION><PRICE>45.0</PRICE></PRODUCT><QUANTITY>100</QUANTITY></ORDERITEM> </ORDER>就會解析錯誤:
錯因在第20行的<ORDER>上,也就是說,新的XML文檔在被瀏覽器解析的時候默認(rèn)了<ORDER>是根元素,而第一次<\ORDER>出現(xiàn)的時候,意味著整個XML文檔的結(jié)束,后面仍有<ORDER>就不合法,XML文檔樹可不是森林,必須單根。
XML元素都必須有一個關(guān)閉標(biāo)簽
這個關(guān)閉標(biāo)簽啊,在HTML中經(jīng)常有不寫關(guān)閉標(biāo)簽的情況而并不會解析錯誤。
即使是HTML5,也被迫向某些陋習(xí)妥協(xié)了,比如<p>等等
但是XML語法要求嚴(yán)格,標(biāo)簽必須被關(guān)閉。
如果我們刪去上面代碼最后一行的<\SALES>,就會解析錯誤:
當(dāng)然了,我們這時以根元素舉的例子,錯誤原因來自于文檔解析到結(jié)尾仍沒出現(xiàn)根元素<SALES>的關(guān)閉標(biāo)簽<\SALES>,這是不被允許的。
事實(shí)上,任何XML元素都是如此。
XML標(biāo)簽對大小寫敏感
一般的編程語言都對大小寫敏感,像 Visual Basic 系列這種不管大小寫的真是奇葩……
XML雖不是編程語言,但也對大小寫敏感。
怎么說敏感呢?
就是說<SALES>與<sales>是完全不同的標(biāo)簽。
我們將上面代碼的最后一行的<\SALES>換成<\sales>:
顯示解析錯誤:
再換成<HHH>,看看解析情況:
都是“非配對的標(biāo)簽”,其實(shí)人家都沒管你是不是大小寫問題,直接就是認(rèn)為反正你不是<\SALES>就是不對。
所以要注意大小寫啊!!!
XML元素必須被正確的嵌套
這個問題是說,比如我們<SALES>嵌套了<ORDER>,收尾順序就得是先<\ORDER>后<\SALES>,有棧的意味。
如果膽敢出現(xiàn)FIFO隊(duì)列式的先<\SALES>后<\ORDER>,就算嵌套錯誤,導(dǎo)致解析錯誤。
XML屬性值必須加引號
有關(guān)屬性的問題我在這篇文章中已經(jīng)講過很詳細(xì)了,就不再細(xì)說。
必須注意的一點(diǎn)是:XML屬性值必須加引號。
XML屬性其實(shí)換成JSON顯得更直白,就和Python的字典一個樣子,key:value式的KV對,只不過這個value不管是什么值,都必須加引號,就比如下面的例子:
<PRODUCT id="202003010001">不能寫成下面的樣子:
<PRODUCT id=202003010001>XML不管屬性值是不是數(shù)值,反正必須加引號!!!
總結(jié)
以上是生活随笔為你收集整理的【XML】XML语法格式提要的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 路径计数2(洛谷P1176题题解,Jav
- 下一篇: 【VB.NET】测验题目Quiz2