如何理解Android中的xmlns

作為一名 Android 開發(fā)擎析,我想大家對xmlns并不會陌生,因?yàn)樵趯懖季治募?如下代碼所示)的時候經(jīng)常會碰到,雖然很多人對其含義并不是特別了解(比如說我)揍魂。好吧桨醋,今天我們就來挖一挖這神奇的xmlns

<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/window_background">
</LinearLayout>

什么是xmlns

首先现斋,我們先來看下到底什么是xmlns喜最,它是 XML 文檔中的一個概念:英文叫做 XML namespace,中文翻譯為 XML 命名空間庄蹋。一講到命名空間瞬内,我想很多人會聯(lián)想到C++中的namespaceJava中的 packagename,而這兩者的作用都是為了解決命名上的沖突(例如類名限书,接口名等)虫蝶。類似的,XML namespace也是為了解決 XML 中元素和屬性命名沖突倦西,因?yàn)?XML 中的標(biāo)簽并不是預(yù)定義的能真,這一點(diǎn)與 HTML 是有區(qū)別的,HTML 中的標(biāo)簽是預(yù)定義的扰柠,所以我們會遇到命名沖突的問題粉铐。

XML 命名空間定義語法為xmlns:namespace-prefix="namespaceURI",一共分為三個部分:

  • xmlns:聲明命名空間的保留字卤档,其實(shí)就是XML中元素的一個屬性蝙泼;
  • namespace-prefix:命名空間的前綴针史,這個前綴與某個命名空間相關(guān)聯(lián)猪勇;
  • namespaceURI:命名空間的唯一標(biāo)識符明棍,一般就是一個URI引用。

通過上面的內(nèi)容的講解哨免,我們對命名空間有了一定的了解,下面我們通過一個例子引用來說明一下xmlns屬性是如何解決命名沖突的:

命名沖突
在 XML 中昙沦,元素名稱是由開發(fā)者定義的琢唾,當(dāng)兩個不同的文檔使用相同的元素名時,就會發(fā)生命名沖突盾饮。這個 XML 文檔攜帶著某個表格中的信息:

<table>
   <tr>
   <td>Apples</td>
   <td>Bananas</td>
   </tr>
</table>

這個 XML 文檔攜帶有關(guān)桌子的信息:

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

假如這兩個 XML 文檔被一起使用采桃,由于兩個文檔都包含帶有不同內(nèi)容和定義的 <table> 元素,就會發(fā)生命名沖突丘损。XML 解析器無法確定如何處理這類沖突普办。

使用命名空間(Namespace)
這個XML文檔攜帶著某個表格中的信息:

<h:table xmlns:h="http://www.w3.org/TR/html4/">
   <h:tr>
   <h:td>Apples</h:td>
   <h:td>Bananas</h:td>
   </h:tr>
</h:table>

此XML文檔攜帶著有關(guān)一件家具的信息:

<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>

我們?yōu)?code><table>標(biāo)簽添加了一個xmlns屬性,并在每個標(biāo)簽前面都添加了相應(yīng)的前綴徘钥,這個前綴是一個與某個命名空間相關(guān)聯(lián)的限定名稱衔蹲,這個前綴就代表后面那個 URI 引用,或者說一個縮寫呈础。

關(guān)于xmlns就先簡單講到這里舆驶,大家如果要深入了解的話橱健,可以點(diǎn)擊本文中的跳轉(zhuǎn)鏈接,下一節(jié)我們來看下 Android 中的那些xmlns沙廉。

Android中的xmlns

在Android中拘荡,目前我們碰到的xmlns一共有三種:

xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"

android

命名空間android用于 Android 系統(tǒng)定義的一些屬性。

app

命名空間app用于我們應(yīng)用自定義的一些屬性撬陵,這個與 Android 自定義屬性和系統(tǒng)控件擴(kuò)展應(yīng)該有關(guān)系珊皿,大家可以再繼續(xù)研究一下。

tools

根據(jù)官方定義袱结,tools命名空間用于在 XML 文檔記錄一些亮隙,當(dāng)應(yīng)用打包的時候,會把這部分信息給過濾掉垢夹,不會增加應(yīng)用的 size溢吻,說直白點(diǎn),這些屬性是為IDE提供相關(guān)信息果元。

參考文章

Tools Attributes
What does “xmlns” in XML mean
What is the 'app' Android XML namespace

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末促王,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子而晒,更是在濱河造成了極大的恐慌蝇狼,老刑警劉巖,帶你破解...
    沈念sama閱讀 210,978評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件倡怎,死亡現(xiàn)場離奇詭異迅耘,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)监署,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評論 2 384
  • 文/潘曉璐 我一進(jìn)店門颤专,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人钠乏,你說我怎么就攤上這事栖秕。” “怎么了晓避?”我有些...
    開封第一講書人閱讀 156,623評論 0 345
  • 文/不壞的土叔 我叫張陵簇捍,是天一觀的道長。 經(jīng)常有香客問我俏拱,道長暑塑,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,324評論 1 282
  • 正文 為了忘掉前任锅必,我火速辦了婚禮梯投,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己分蓖,他們只是感情好尔艇,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,390評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著么鹤,像睡著了一般终娃。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上蒸甜,一...
    開封第一講書人閱讀 49,741評論 1 289
  • 那天棠耕,我揣著相機(jī)與錄音,去河邊找鬼柠新。 笑死窍荧,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的恨憎。 我是一名探鬼主播蕊退,決...
    沈念sama閱讀 38,892評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼憔恳!你這毒婦竟也來了瓤荔?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,655評論 0 266
  • 序言:老撾萬榮一對情侶失蹤钥组,失蹤者是張志新(化名)和其女友劉穎输硝,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體程梦,經(jīng)...
    沈念sama閱讀 44,104評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡点把,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了屿附。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片郎逃。...
    茶點(diǎn)故事閱讀 38,569評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖拿撩,靈堂內(nèi)的尸體忽然破棺而出衣厘,到底是詐尸還是另有隱情如蚜,我是刑警寧澤压恒,帶...
    沈念sama閱讀 34,254評論 4 328
  • 正文 年R本政府宣布,位于F島的核電站错邦,受9級特大地震影響探赫,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜撬呢,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,834評論 3 312
  • 文/蒙蒙 一伦吠、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦毛仪、人聲如沸搁嗓。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,725評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽腺逛。三九已至,卻和暖如春衡怀,著一層夾襖步出監(jiān)牢的瞬間棍矛,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,950評論 1 264
  • 我被黑心中介騙來泰國打工抛杨, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留够委,地道東北人。 一個月前我還...
    沈念sama閱讀 46,260評論 2 360
  • 正文 我出身青樓怖现,卻偏偏與公主長得像茁帽,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子真竖,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,446評論 2 348

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,734評論 25 707
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理脐雪,服務(wù)發(fā)現(xiàn),斷路器恢共,智...
    卡卡羅2017閱讀 134,628評論 18 139
  • 1. XML簡介 以下內(nèi)容來自于http://www.w3school.com.cn/xml 基本知識 XML 和...
    WebSSO閱讀 1,905評論 1 7
  • 打開終端cd 進(jìn)入項(xiàng)目根目錄(即工程文件所在目錄)輸入以下命令find . "(" -name "*.m" -or...
    陌上北辰閱讀 571評論 0 0
  • 童年的記憶战秋,模糊中總是和父親的背分不開的,腦海里會浮現(xiàn)很多場面讨韭。 我的童年是從四歲開始的脂信,那一年,...
    玉冰蓮閱讀 711評論 0 0