我已经建立了一个从XML读取的系统,但我需要在读取XML之前手动构建对象。
XML:
<actor id="" PGFVersion="" GSCVersion="">
<attributes>
<text id="name">Actor 1</text>
<real id="time">0</real>
<point id="position">
<real id="x">0</real>
<real id="y">0</real>
</point>
<size id="size">
<real id="width">0</real>
<real id="height">0</real>
</size>
<angle id="rotation">0</angle>
<color id="color">
<real id="red">0</real>
<real id="green">0</real>
<real id="blue">0</real>
<real id="alpha">0</real>
</color>
<image id="image">0</image>
<text id="tags">tag1 tag2</text>
<boolean id="preloadArt">true</boolean>
</attributes>
</actor>
我如何设置对象:
public class Attributes {
@XStreamImplicit
public List fields = new ArrayList();
public Attributes(){
this.addText("name", "Actor 1");
this.addReal("time", "0");
this.addPoint("position", "0", "0");
this.addSize("0", "0");
this.addAngle("rotation", "0");
this.addColor("0", "0", "0", "0");
this.addImage("0");
this.addText("tags", "tag1 tag2");
this.addBoolean("preloadArt","true");
}
public void addText(String id, String value){
Text text = new Text(id,value);
this.fields.add(text);
}
//other adders
}
但是我应该如何处理随机的字段数。如果XML上有2个<color>
字段,我会读到怎么办?如何自动化?
答案 0 :(得分:0)
通常,XStream对象具有表示XML中字段的字段。请参阅XStream tutorial中的Person
- 对象。
如果您有这种类型的对象,我认为您应该能够使用color
注释@XStreamImplicit
属性来处理XML中的多个出现。
这个未经测试的代码的某些地方:
public class Attributes {
// 'name' and 'text' occurs only once.
public String name;
public String text;
public Size size;
// The other attributes
// color can occur multiple times.
@XStreamImplicit
public int color;
}