我试图通过Java使用Jaxb以编程方式编写AndroidManifest.xml文件。在定义属性时出现了问题,这些属性遵循字符串命名约定。例如,manifest元素是这样定义的:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="string"
android:sharedUserId="string"
android:sharedUserLabel="string resource"
android:versionCode="integer"
android:versionName="string"
android:installLocation=["auto" | "internalOnly" | "preferExternal"] >
. . .
</manifest>
在Java中执行此操作时,我无法注释属性,因为xmlns:android等不是有效的Java变量。
在仍然使用Jaxb而不使用StringBuilder技术生成XML的情况下,克服这个问题的最佳方法是什么?
下面是javax.xml.bind.annotation.XmlElement:
的javadoc中的一个示例 @XmlElement(name="item-price")
public java.math.BigDecimal price;
name参数是您将在XML中看到的。
但是这个android:命名空间前缀,应该根据命名空间定义出现,这是namespace的参数:
@XmlElement(name="item-price", namespace="http://schemas.android.com/apk/res/android")
public java.math.BigDecimal price;
在编组之后,你很可能会看到"ns1:"代替android:,但这没关系。
获得带注释的Java代码的最简单方法:编写(或查找)XML模式并通过xjc
运行它。几乎一直有效;-)