XStream - 如果XML中没有带注释的字段,如何抛出异常

时间:2012-09-12 14:38:03

标签: java xml deserialization xstream

我有这样的事情:

Java Class

.....
@XStreamAlias("SOME_TAG")
    private String someAttribute;
.....

<ROOT>
    <ANOTHER_TAG>VALUE</ANOTHER_TAG>
</ROOT>

在我的xml中我需要这个“SOME_TAG”,如果由于某种原因它丢失了我需要抛出异常。

我能用XStream吗?

此致

2 个答案:

答案 0 :(得分:1)

我不是xstream的实验用户,但我会这样做:

  1. 创建一个dtd文件或xsd文件,您可以在其中指定所需的元素,然后可以针对dtd或xsd文件验证xml文件。 或者,
  2. 在类中进行验证方法验证是否任何字段为null或您需要进行的任何其他验证。

答案 1 :(得分:1)

纯粹使用XStream我认为你有两个选择:

  1. XStream使用与JDK序列化相同的机制,因此您只需在您的类中实现反序列化的Object readResolve()方法。在初始化对象并且所有字段都由XStream设置之后调用此方法,因此您可以使用此方法检查someAttribute字段是否为null - 如果是,则可以抛出异常。 (可以在此处找到XStream的示例:http://x-stream.github.io/faq.html#Serialization_initialize_transient

  2. 另一种方法是为您的班级编写自定义Converter,并检查该字段是否已填写。