Итак, основываясь на вашем комментарии, я считаю, что вам понадобится пользовательский конвертер.
Вот пример:
import com.thoughtworks.xstream.converters.Converter;
import com.thoughtworks.xstream.converters.MarshallingContext;
import com.thoughtworks.xstream.converters.UnmarshallingContext;
import com.thoughtworks.xstream.io.HierarchicalStreamReader;
import com.thoughtworks.xstream.io.HierarchicalStreamWriter;
public class MyClassConverter implements Converter{
@Override
public boolean canConvert(Class clazz)
{
return clazz.equals(MyClass.class);
}
@Override
public void marshal(Object value, HierarchicalStreamWriter writer,
MarshallingContext context)
{
}
@Override
public Object unmarshal(HierarchicalStreamReader reader,
UnmarshallingContext context)
{
// Create MyClass Object
MyClass myClass = new MyClass();
// Traverse Tree
while (reader.hasMoreChildren())
{
reader.moveDown();
if ("polygon".equals(reader.getNodeName()))
{
Polygon polygon = (Polygon)context.convertAnother(myClass, Polygon.class);
myClass.addPolygon(polygon);
}
reader.moveUp();
}
// Return MyClass Object
return myClass;
}
}
Если вы не знаете, вот справочное руководство:http://x -stream.github.io / converter-tutorial.html
Теперь осталось только зарегистрировать свой конвертер, что, я полагаю, вы знаете, как это сделать.В любом случае, важная, хотя и очевидная вещь, которую стоит отметить, это то, что addPolygon - это метод, который я использовал для заполнения вашего нового объекта списка.