Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaDOM:如何添加带有特定前缀的名称空间?_Java_Xml_Xml Namespaces - Fatal编程技术网

JavaDOM:如何添加带有特定前缀的名称空间?

JavaDOM:如何添加带有特定前缀的名称空间?,java,xml,xml-namespaces,Java,Xml,Xml Namespaces,我正在尝试用Java为Android构建一个简单的XML DOM。这很好,但是Android名称空间前缀总是设置为“ns0”,但它应该是“Android” 我得到的输出如下: <manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:ns0="http://schemas.android.com/apk/res/android" ns0:versionName="bla"/> 我需要更

我正在尝试用Java为Android构建一个简单的XML DOM。这很好,但是Android名称空间前缀总是设置为“ns0”,但它应该是“Android”

我得到的输出如下:

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

方法需要一个QName。在第二次调用中,您传递了一个非限定的属性名称,因此向其添加了一个默认前缀(
ns0
)。因为你叫了两次,所以你有两个属性

要获得预期结果,只需使用限定属性名调用一次
setAttributeNS()

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