Javax XmlTransient不能用于枚举字段



我有以下Enum类

public enum Test
{
A,
B,
C
}

,为此生成的XML是

<xs:simpleType name="Test">
<xs:restriction base="xs:string">
<xs:enumeration value="A"/>
<xs:enumeration value="B"/>
<xs:enumeration value="C"/>
</xs:restriction>
</xs:simpleType>

我不想在xml中包含C值因为我只在一些内部逻辑中使用它

基本上,我希望生成以下xml
<xs:simpleType name="Test">
<xs:restriction base="xs:string">
<xs:enumeration value="A"/>
<xs:enumeration value="B"/>
</xs:restriction>
</xs:simpleType>

我尝试了下面的代码,但它不工作

public enum Test
{
A,
B,
@XmlTransient
C
}

我必须编写自定义的编组和反编组逻辑来实现结果

import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;

@XmlJavaTypeAdapter(TestAdapter.class)
public enum Test
{
A,
B,
C
}
public class TestAdapter extends XmlAdapter<Test, Test>
{
public Test unmarshal(Test v) throws Exception
{
if (v == Test.C)
{
return null;
}
return v;
}

public Test marshal(Test v) throws Exception
{
if (v == Test.C)
{
return null;
}
return v;
}
}

最新更新