没有新类实例的简单库Xml序列化

时间:2012-05-10 11:56:22

标签: java serialization simple-framework

在我的Java项目中,我尝试使用Simple Library(http://simple.sourceforge.net)进行XML序列化。 现在我需要从xml序列化到我的类的现有实例。但是这个库总是创建新的实例。 例如,我在内存中有一些对象:

TObj myObject = new TObj();
myObject.field1 = 999;
myObject.field2 = 777;

然后我从服务器xml收到此TObj,但只收到部分字段,例如:

 <TObj field1="100">

我想在 myObject 变量中序列化此xml。之后的结果应该是:

myObject.field1 = 100;
myObject.field2 = 777;

但是简单的库总是创建TObj类的新实例。 我怎么能达到理想的目的呢?

由于

2 个答案:

答案 0 :(得分:3)

答案 1 :(得分:0)

也许您的TO​​bj类没有正确遵循simplexml的序列化和反序列化规则。

我建议您使用批注定义TObj,以便simplexml知道如何序列化对象。这是一个示例:

@Root(name = "Example")
public class SimpleExample {
    @Element(name = "Name", required = false)
    private String name;
}

这样做,您可以创建类SimpleExample的新实例,并使用以下方法对其进行序列化:

    public static <T> String marshal(T obj, Class<T> clazz) throws Exception {
    Strategy strategy = new AnnotationStrategy();
    Serializer serializer = new Persister(strategy, format);
    StringWriter out = new StringWriter();
    serializer.write(obj, out);
    return out.toString();
}

您将得到类似的东西:

<?xml version="1.0" ?>
<Example>
    <Name>value_of_this_field<Name>
<Example>