【问题标题】:XStream - how to throw an exception if an annotated field is not present in XMLXStream - 如果 XML 中不存在带注释的字段,如何引发异常
【发布时间】:2012-09-05 14:53:40
【问题描述】:

我有这样的事情:

Java 类

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

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

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

我可以用 XStream 做吗?

问候

【问题讨论】:

    标签: java xml deserialization xstream


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-01-03
        • 1970-01-01
        • 2013-06-03
        • 2013-08-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多