日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > asp.net >内容正文

asp.net

XML 语法速查笔记

發(fā)布時(shí)間:2025/3/17 asp.net 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 XML 语法速查笔记 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

相比起 Json,XML 是一種相對(duì)古老和復(fù)雜、但功能更加強(qiáng)大的數(shù)據(jù)存儲(chǔ)/傳輸格式。也因?yàn)槠鋸?fù)雜,有一些語(yǔ)法需要記錄一下,在使用多種語(yǔ)言進(jìn)行 XML 操作的時(shí)候備查。


范例

下面是一個(gè)相對(duì)比較完整的 XML 范例:

<?xml version="1.0" encoding="UTF-8"?> <!-- 上面這一行不屬于 XML 組成部分,但是是 XML 文檔的一部分 --> <readme><author>Andrew</author><date>2018-10-11<year>2018</year><mon>10</mon><mday>11</mday></date><note>這是一個(gè)示例性質(zhì)的 XML 范例。可以看到,一些關(guān)鍵字符比如雙引號(hào) &quot; 是需要轉(zhuǎn)義的。</note><main_page id="1307425"><href><![CDATA[https://cloud.tencent.com/developer/column/4101]]></href><name>amc</name></main_page> </readme>

以下內(nèi)容主要根據(jù)上述范例進(jìn)行說(shuō)明。


概念和關(guān)鍵詞

  • XML:可擴(kuò)展標(biāo)記語(yǔ)言(EXtensible Markup Language)
  • XML 文檔:上述范例就是一個(gè) XML 文檔
  • 元素:一個(gè) <xxx>...</xxx> 對(duì)及其中間的部分加起來(lái),就是一個(gè)元素
  • XML 標(biāo)簽(Tags):范例中的 <xxx> 和 </xxx> 文字就是一對(duì)標(biāo)簽
  • 根元素:每個(gè) XML 文檔需要有且只有一個(gè)根元素,這個(gè)元素是所有元素的祖先元素
  • 子元素(Children)、同胞元素(Siblings):范例中 <date> 元素下的 <year>、<mon>、<mday> 元素就是子元素,這幾個(gè)子元素之間互為同胞元素
  • 文本內(nèi)容(Text):范例中,<author> 元素中的 Andrew 就是文本內(nèi)容;同理 <date> 元素下的 2018-10-11 也是文本內(nèi)容
  • 屬性(Attributes):范例中 main_page 元素中有一段文字 id="1307425",這就是元素 main_page 的屬性,其屬性名為 "id",屬性值 為 “1307425”。

語(yǔ)法規(guī)則速查

  • 所有 XML 元素均需要有關(guān)閉標(biāo)簽,比如 <name> 均必須跟著一個(gè) </name> 結(jié)尾
  • XML 標(biāo)簽大小寫(xiě)敏感
  • XML 必須正確地嵌套
  • XML 必須有且只有一個(gè)根元素
  • 屬性值必須加上引號(hào),至于屬性名則無(wú)需引號(hào)。

XML 元素命名規(guī)則

強(qiáng)制性的命名規(guī)則如下:

  • 元素命名只包含文字(包括非英文的文字)、數(shù)字、字符
  • 不能以 “XML” 或其他大寫(xiě)轉(zhuǎn)換后為 “XML” 的字符串開(kāi)頭
  • 不能包含空格

約定俗成(建議)的命名規(guī)則,除了上述幾條之外,還有:

  • 不要使用減號(hào)/連字符 “-”,建議使用下劃線 “_”
  • 避免使用點(diǎn) “.” 和冒號(hào) “:”
  • 不要使用非 ascii 字符

屬性

建議避免使用屬性,而是以子元素 + 文本內(nèi)容的方式來(lái)替代。比如:

<date>2018-10-11</date>

建議替換成范例中的:

<date>2018-10-11<!--可加可不加,加上可以作為對(duì)老代碼的兼容--><year>2018</year><mon>10</mon><mday>11</mday> </date>

“轉(zhuǎn)義”

這里借用了 C/C++ 里格式化字符串的 “轉(zhuǎn)義” 一詞,但是實(shí)際上 XML 沒(méi)有這個(gè)名詞,而是 “實(shí)體引用”。XML 中有五個(gè)預(yù)定義的實(shí)體引用,在使用的時(shí)候需要 “轉(zhuǎn)義”:

字符名字符“轉(zhuǎn)義” 后的字符串
小于號(hào)<&lt;
大于號(hào)>&gt;
”and“ 符號(hào)&&amp;
單引號(hào)'&apos;
雙引號(hào)"&quot;

其中只有 < 和 & 是確實(shí)需要特殊處理的,但是作為規(guī)范,上述所有符號(hào)實(shí)際操作中均應(yīng)處理。


XML CDATA

XML CDATA 是一個(gè)關(guān)鍵字,其包含的內(nèi)容不會(huì)被 XML 解析器解析。CDATA 采用 <![CDATA 開(kāi)頭,用 ]]> 結(jié)尾。比如范例中的:

<href><![CDATA[https://cloud.tencent.com/developer/column/4101]]></href>

注意不同語(yǔ)言或庫(kù)對(duì) CDATA 的解析方式可能會(huì)有所不同,比如 Python 解析 CDATA 后會(huì)得到一個(gè)普通的 text 值,但是 RapidXML 則會(huì)得到一個(gè)子元素。

CDATA 也有限制,就是正文中不能包含 ]]>,否則會(huì)導(dǎo)致解析錯(cuò)誤。


XML 命名空間

這個(gè)功能目前筆者覺(jué)得比較少用,不過(guò)還是記錄一下。命名空間約定使用冒號(hào)進(jìn)行分分隔。命名空間可以手動(dòng)指定,如:

<f:table><f:name>African Coffee Table</f:name><f:width>80</f:width><f:length>120</f:length> </f:table>

實(shí)操中,推薦加上命名空間屬性 xmlns,如:

<f:table xmlns:f="http://www.w3school.com.cn/furniture"><f:name>African Coffee Table</f:name><f:width>80</f:width><f:length>120</f:length> </f:table>

參考資料

  • XML 編碼 - W3school 在線教程
  • RapidXML解析CDATA類(lèi)型節(jié)點(diǎn)的問(wèn)題
  • XML 宣告 XML 標(biāo)準(zhǔn)
  • XML 在線格式化 - 1
  • XML 在線格式化 - 2

本文章采用 知識(shí)共享署名-非商業(yè)性使用-相同方式共享 4.0 國(guó)際許可協(xié)議 進(jìn)行許可。

本文地址:https://segmentfault.com/a/1190000016649785
原文發(fā)布于:https://cloud.tencent.com/developer/article/1351914,也是本人的專(zhuān)欄。

總結(jié)

以上是生活随笔為你收集整理的XML 语法速查笔记的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。