我使用XML模式和xjc来生成java类。我想定义一个如下所示的XML结构:
<unicorn color="white" superpower="transmogrification">Sparklemallow</unicorn>
具体来说,它有属性和文本节点。我可以这样定义:
<xs:complexType name="unicorn">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="color" type="xs:string"/>
<xs:attribute name="superpower" type="xs:string"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
当我生成Java类时,默认情况下,文本节点表示的属性称为value
:
public class Unicorn implements Serializable
{
protected String value; //want to rename this
protected String color;
protected String superpower;
...
public void setValue(String value) {
this.value = value;
}
public boolean isSetValue() {
return (this.value!= null);
}
}
我想将文本节点属性重命名为更符合语义的东西 - 在本例中为name
。有没有办法指定这个属性的名称应该是什么?
答案 0 :(得分:2)
我可以通过在xs:complexType节点下添加注释来更改此属性的名称:
<xs:complexType name="unicorn">
<xs:annotation>
<xs:appinfo>
<jaxb:property name="name"/> <!-- your property name here -->
</xs:appinfo>
</xs:annotation>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="color" type="xs:ID"/>
<xs:attribute name="superpower" type="xs:string"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>