在我的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类的新实例。 我怎么能达到理想的目的呢?
由于
答案 0 :(得分:3)
使用接受您的类实例而不是.class的read()
Serializer
方法。
答案 1 :(得分:0)
也许您的TObj类没有正确遵循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>