在Xstrem中的另一个对象的上下文中解析XML对象

时间:2017-08-07 14:20:30

标签: java xml xstream

我们说我有以下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解析给定上下文的对象(它应该从哪个对象解析引用?)

2 个答案:

答案 0 :(得分:0)

记住XStream基于流模型。它从上到下处理XML。因此可以添加后向引用(即已经处理过的人),但前向引用根本无法解析。

答案 1 :(得分:0)

我最终编写了一个自定义转换器,用于扫描给定ID的人员列表。为此,我扩展了Converter类,然后使用xstream.registerConverter(new MyAwesomeCustomConverter)注册了它。