JavaDOM:如何添加带有特定前缀的名称空间?
我正在尝试用Java为Android构建一个简单的XML DOM。这很好,但是Android名称空间前缀总是设置为“ns0”,但它应该是“Android” 我得到的输出如下: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"/> 我需要更
<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);