因此,根据您的评论,我相信您将需要一个自定义转换器。
这是一个例子:
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”是我用来填充你的新列表对象的一种方法。