我正在尝试使用Jaxb以编程方式编写AndroidManifest.xml文件。定义属性时出现问题,这些属性遵循字符串:字符串命名约定。例如,清单元素因此被定义:
<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?
答案 0 :(得分:1)
以下是javax.xml.bind.annotation.XmlElement的javadoc示例:
@XmlElement(name="item-price")
public java.math.BigDecimal price;
您可以在XML中看到name参数。
但是这个android:命名空间前缀应该根据命名空间定义出现,这是命名空间的参数:
@XmlElement(name="item-price", namespace="http://schemas.android.com/apk/res/android")
public java.math.BigDecimal price;
编组后,你很可能会看到“ns1:”代替android:,但那没关系。
获取带注释的Java代码的最简单方法:编写(或查找)XML模式并通过xjc
运行它。一直工作 - 差不多; - )