为属性加上@XStreamAsAttribute注解,可以让类成员作为父节点属性输出
示例:
@XStreamAlias("testBean")
class xmlTestBean {
private String fe1;
@XStreamAsAttribute
private String fe2;
public xmlTestBean(String fe1, String fe2) {
this.fe1 = fe1;
this.fe2 = fe2;
}
}
public static void main(String[] args) {
XStream xStream = new XStream();
xStream.autodetectAnnotations(true);
xmlTestBean trst = new xmlTestBean("val1", "val2");
String xml = xStream.toXML(trst);
System.out.println(xml);;
}
结果:
<testBean fe2="val2">
<fe1>val1</fe1>
</testBean>
如果节点本身有数据,又有子属性节点,那么可以使用ToAttributedValueConverter了:
示例:
@XStreamConverter(value= ToAttributedValueConverter.class, strings={"fe2"})
@XStreamAlias("testBean")
class xmlTestBean {
@XStreamAlias("fe1")
private String fe1;
private String fe2;
public xmlTestBean(String fe1, String fe2) {
this.fe1 = fe1;
this.fe2 = fe2;
}
}
```java
public static void main(String[] args) {
XStream xStream = new XStream();
xStream.autodetectAnnotations(true);
xmlTestBean trst = new xmlTestBean("val1", "val2");
String xml = xStream.toXML(trst);
System.out.println(xml);;
}
结果:
<testBean fe1="val1">val2</testBean>
XStreamConverter中的strings值即使填多个也是没用的,他只会识别第一个,无视剩下的。