我们说我有以下XML:
<people>
<person name="John" id="1">...</person>
.....
<person name="Mark" id="3421">
<father references="1" />
</person>
</people>
我创建了以下Xstream
对象:
XStream configXstream = new XStream(new StaxDriver());
configXstream.alias("people", People.class);
configXstream.alias("person", Person.class);
我已将现有XML解析为People
对象。现在我想在运行时从XML中添加一个人,并引用它在现有People
对象中的父亲。例如,我想添加以下内容:
<person name="Peter" id="3459">
<father references="3421" />
</person>
现在我无法将XML解析为person对象,因为它表示对父对象的引用无效。
有没有办法告诉xstream解析给定上下文的对象(它应该从哪个对象解析引用?)
答案 0 :(得分:0)
记住XStream基于流模型。它从上到下处理XML。因此可以添加后向引用(即已经处理过的人),但前向引用根本无法解析。
答案 1 :(得分:0)
我最终编写了一个自定义转换器,用于扫描给定ID的人员列表。为此,我扩展了Converter
类,然后使用xstream.registerConverter(new MyAwesomeCustomConverter)
注册了它。