0

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

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

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

 <TObj field1="100">

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

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

但是简单的库总是创建 TObj 类的新实例。我怎样才能达到预期???

谢谢

4

2 回答 2

3

使用接受类实例而不是.class 的read()方法。Serializer

http://simple.sourceforge.net/download/stream/doc/javadoc/org/simpleframework/xml/Serializer.html#read(T, java.io.File)

于 2012-05-10T12:12:45.783 回答
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>
于 2018-12-11T03:49:55.790 回答