2011-11-10 54 views
2

有人能解釋一下XML中的namespaces(xmlns =「...」)是什麼意思,以及它們如何用於使用E4X導航XML(在ActionScript 3中最好)。XML,namespaces和E4X

我沒有完全理解它們的用途和用法。

回答

1

理論上,XML名稱空間用於避免與標籤名稱發生衝突。因此,我可以創建一個名稱空間,其中包含名爲「mytag」的標籤,而其他人使用相同的標籤「mytag」創建不同的名稱空間,並且不會有任何衝突。每個「mytag」標籤都將明確區分。

實際上,我發現XML命名空間幾乎沒用(多少次你有兩個開發人員爲同一個XML文件創建標籤?),並且讓分析困難得令人討厭。

在EX4中,您需要獲取命名空間,然後爲每個標記加上該命名空間的前綴。因此,舉例來說,如果你要訪問<somenamespace::somename>你會寫在標籤:

var somenamespace:Namespace = xml.namespace("somenamespace"); 
var sometag:XML = somenamespace::somename[0]; 

如果你在谷歌搜索,你會發現,從XML刪除這些無用的命名空間,使分析更容易一些AS3類。

+0

好嗎 - 現在闡明爲什麼我不能訪問我的節點上的數據!謝謝! – Mat

+0

請記住,每個XML文檔都有一個沒有前綴的名稱空間。如果您正在使用可以使用XSD文件進行驗證的完整XML結構,並且無法修改XSD文件(例如MathML),那麼「擴展」XML的唯一方法是將自己的元素引入到獨立的名稱空間,你擁有。 (每個XSD都可以定義允許這種擴展名的位置,例如AIR SDK中使用的應用程序XML文件不允許這樣做。) – karfau