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

时间:2014-06-21 14:59:58

标签: java android xml jaxb

我正在尝试使用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?

1 个答案:

答案 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运行它。一直工作 - 差不多; - )