java - 将 Java 枚举序列化为 XML 的最佳实践是什么?

标签 java xml serialization enums persistence

您好,我有一个 Java 枚举,我想从 XML 来回序列化一个包含枚举值的变量以实现持久性。我的枚举是这样定义的...

public enum e_Type
{
    e_Unknown,
    e_Categoric,
    e_Numeric
}

我的变量是这样声明的...

private e_Type type;

我希望它进入这样的 XML 标记中......

<type>value</type>

在 XML 中持久保存枚举值的最佳实践是什么?

最佳答案

看看 JAXB 注释,它是 JDK 的一部分:

public static void main(String[] args) throws Exception {
    JAXBContext context = JAXBContext.newInstance(Foo.class);
    StringWriter sw = new StringWriter();
    context.createMarshaller().marshal(new Foo(), sw);
    System.out.println(sw);
}

@XmlRootElement
public static class Foo {
    @XmlElement
    private e_Type type = e_Type.e_Unknown;
}

@XmlEnum
public enum e_Type {
    e_Unknown,
    e_Categoric,
    e_Numeric
}

您可以进一步自定义输出,例如如果您希望外部 XML 表示与内部 Java 枚举项名称不同:

@XmlEnumValue("UNKNOWN")
e_Unknown

顺便说一句:对于 java 类/枚举使用大写名称是一个非常严格的约定

关于java - 将 Java 枚举序列化为 XML 的最佳实践是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/589732/

相关文章:

java - 调度程序 Servlet。它在 Spring MVC 框架中适合什么位置

xml - XPath - 根据相同条件从不同路径检索多个值

c# - 序列化 List<T> 错误反射(reflect)字段

c# - 反序列化使用属性名称/值对的 xml

java - java中的模式匹配: extracting digits from a string literal

java - 在 javaME 中仅从取景器获取缩略图而不是整个照片

java - java中的文字纠错程序

c# - 如何在歌曲中存储评分?

java - Android:将 BasicNameValuePairs 的 ArrayList 传递给另一个 Activity

Java StreamCorruptedException 试图反序列化从 SharedPreferences Android 读取的对象