Let's say you have a Coin class with a type attribute, as follows:
@XStreamAlias("coin")
public class Coin {
String type;
}
And you have a Coins class that constains a List of Coin:
@XStreamAlias("coins")
public class Coins{
@XStreamImplicit
List<Coin> coins = new ArrayList<Coin>();
}
Pay attention to the annotations. The List is Implicit and the Coins class will be shown as "coins".
The output will be:
<coins>
<coin>
<type>Gold</type>
</coin>
<coin>
<type>Silver</type>
</coin>
<coin>
<type>Bronze</type>
</coin>
</coins>
It's not the same you asked for, but there is a reason.
At first, coin have only one attribute, but we are not sure if all objects you want to show do have only one attribute too. So, we need to tell which object attribute we are talking about.
You can also show the Coin attributes as XML Attributes, not fields. As follows:
@XStreamAlias("coin")
public class Coin {
@XStreamAsAttribute
String type;
Coin(String type) {
this.type = type;
}
}
Here is the output:
<coins>
<coin type="Gold"/>
<coin type="Silver"/>
<coin type="Bronze"/>
</coins>
Hope it helps.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…