xml--> javabean
<a desc="测试xml转bean">
<b>1</b>
<c>a2</c>
<d>2020-11-01 21:12:30 CST</d>
<z>2020-11-01T22:52:19</z>
<e>0.12</e>
<f></f>
<g>23</g>
<l>
<r>wqe</r>
<r>asd</r>
<r>zxc</r>
</l>
<k>
<m>
<t>ppp</t>
<y>ooo</y>
</m>
<m>
<t>iii</t>
<y>uuu</y>
</m>
</k>
</a>
@XStreamAlias("m")
public class m {
@XStreamAlias("t")
String t;
@XStreamAlias("y")
String y;
}
import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
import lombok.Data;
import lombok.ToString;
import org.junit.Test;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Date;
import java.util.List;
@XStreamAlias("a")
@Data
@ToString
public class a {
/**
* a标签内的属性
*/
@XStreamAsAttribute
String desc;
/**
* 指定标签名称
*/
@XStreamAlias("b")
int b;
@XStreamAlias("g")
Integer g;
@XStreamAlias("c")
String c;
@XStreamAlias("d")
Date d;
@XStreamAlias("z")
LocalDateTime z;
@XStreamAlias("e")
double e;
@XStreamAlias("f")
double f;
@XStreamAlias(value = "l", impl = List.class)
List<String> uu;
@XStreamAlias(value = "k", impl = List.class)
List<m> fg;
@Test
public void test() {
String xml = "上面的xml内容";
XStream xStream = new XStream();
// 开启扫描注解 通过注解方式 反序列化成java对象
xStream.processAnnotations(a.class);
// 针对<r> 标签 ,否则无法识别<r>
xStream.alias("r", String.class);
// 针对标签<f></f> 标签空值 属性类型Double 专门做的转换器, 日期 字符串 同理
xStream.registerConverter(new DoubleConventy());
a a = (a) xStream.fromXML(xml);
System.out.println(a.toString());
}
}
//Double转换器
public class DoubleConventy extends com.thoughtworks.xstream.converters.basic.DoubleConverter {
@Override
public Object fromString(String str) {
if(StringUtils.isBlank(str)){
return 0.0;
}
return super.fromString(str);
}
}