如何在Java中使用非标准变量名来生成XML标记



我试图通过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运行它。几乎一直有效;-)

最新更新