2014-05-24 37 views
1

我正在嘗試在Android中爲Java構建一個簡單的XML DOM。這工作得很好,但Android的命名空間前綴始終設置爲「NS0」,但它應該是「Android」的Java DOM:如何添加具有特定前綴的名稱空間?

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); 
factory.setNamespaceAware(true); 

doc = factory.newDocumentBuilder().newDocument(); 
doc.setXmlStandalone(true); 

Element manifest = doc.createElement("manifest"); 
manifest.setAttributeNS("http://www.w3.org/2000/xmlns/","xmlns:android",NS_ANDROID); 
manifest.setAttributeNS(NS_ANDROID, "versionName", "bla"); 
doc.appendChild(manifest); 

輸出我得到的是以下幾點:

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:ns0="http://schemas.android.com/apk/res/android" ns0:versionName="bla"/> 

什麼我需要改變得到以下結果:

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
android:versionName="bla"/> 

回答

1

setAttributeNS()方法需要的QName。在第二次調用中,您傳遞了一個不合格的屬性名稱,因此添加了默認前綴(ns0)。既然你叫了兩次,你有兩個屬性。

爲了得到你所期望的結果,你只要有一個合格屬性名稱叫setAttributeNS()一次:

Element manifest = doc.createElement("manifest"); 
manifest.setAttributeNS(NS_ANDROID, "android:versionName", "bla"); 
doc.appendChild(manifest); 
相關問題