从XML修改JAXB生成类并自定义JAXB解组

时间:2012-07-10 14:06:31

标签: java xml jaxb marshalling

我的XML / XSD中的元素很少,如<TestElement tc="222">SomeValue</TestElement>。根据XSD tc,它的值属于另一个只有键值对的元素。

<xsd:element ref="TestElement" minOccurs="0" />
<xsd:element name="TestElement" type="SUBTYPE_CODES" />
<xsd:complexType name="SUBTYPE_CODES">
        <xsd:simpleContent>
            <xsd:extension base="xsd:string">
                <xsd:attribute name="tc" use="required" type="TRANS_MODE_CODES_TC" />
            </xsd:extension>
        </xsd:simpleContent>
    </xsd:complexType>

默认情况下,JAXB以这种方式为此元素生成了具有两个String键和值的单独类。
JAXB生成的元素

@XmlElement(name = "TestElement")
 protected SUBTYPECODES testElement;

属性类:

@XmlType(name = "SUBTYPE_CODES", propOrder = {
    "value"
})
public class SUBTYPECODES {

    @XmlValue
    protected String value;
    @XmlAttribute(name = "tc", required = true)
    protected BigInteger tc;
}

现在每种类型的属性都有超过千个类。我将使用这些类作为Hibernate的实体类。

我想将它更改为JAXB类,如下所示,并删除所有属性特定的类。

protected String testElementTC;
protected String testElementValue;

如何在不影响编组/解组的情况下在JAXB生成的类中声明上述变量?

0 个答案:

没有答案