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

Parse XML object in the context of another object in Xstrem

假设我有以下 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 在给定上下文的情况下解析对象(它应该从中解析引用的对象?)

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

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

注册了它