我有以下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;
}
}