业务中遇到的xml转bean的场景,记录一次xStream解析xml中注解的使用,如下是xml节点与bean字段的对应写法:
xml:
<?xml version="1.0" encoding="UTF-8"?>
<student name="xiaobai">
<report>
<subject>language</subject>
<score>100</score>
</report>
<report>
<subject>English</subject>
<score>100</score>
</report>
</student>
bean:
package com.xiaobai;
import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
import com.thoughtworks.xstream.annotations.XStreamImplicit;
import com.thoughtworks.xstream.annotations.XStreamOmitField;
import com.ywsk.admin.Report;
import java.util.List;
@XStreamAlias("student") //define class level alias
public class Student {
@XStreamAlias("name") //define field level alias
@XStreamAsAttribute //define field as attribute
private String name;
@XStreamImplicit //define list as an implicit collection
private List<Report> reports;
@XStreamOmitField //omit a field to not to be a part of XML
private int desc;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public List<Report> getReports() {
return reports;
}
public void setReports(List<Report> reports) {
this.reports = reports;
}
public int getDesc() {
return desc;
}
public void setDesc(int desc) {
this.desc = desc;
}
}
package com.xiaobai;
import com.thoughtworks.xstream.annotations.XStreamAlias;
@XStreamAlias("report") //define class level alias
public class Report {
@XStreamAlias("subject") //define field level alias
private String subject;
@XStreamAlias("score") //define field level alias
private String score;
public String getSubject() {
return subject;
}
public void setSubject(String subject) {
this.subject = subject;
}
public String getScore() {
return score;
}
public void setScore(String score) {
this.score = score;
}
}