环境:SpringBoot、XStream
xStream:
<!--XStream-->
<dependency>
<groupId>com.thoughtworks.xstream</groupId>
<artifactId>xstream</artifactId>
<version>1.4.10</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.6</version>
</dependency>
City:
@XStreamAlias("d")
public class City {
@XStreamAsAttribute
@XStreamAlias("d1")
private String cityId;
@XStreamAsAttribute
@XStreamAlias("d2")
private String cityName;
@XStreamAlias("d3")
@XStreamAsAttribute
private String cityCode;
@XStreamAsAttribute
@XStreamAlias("d4")
private String province;
...
}
XML:
<?xml version="1.0" encoding="UTF-8"?>
<d d1="101280101" d2="广州" d3="guangzhou" d4="广东"/>
XstreamUtil:
public class XstreamUtil {
public static <T> T xmlToBean(Class<?> clazz, String xml){
try{
XStream xStream = new XStream();
xStream.processAnnotations(clazz);
xStream.autodetectAnnotations(true);
return (T) xStream.fromXML(xml);
}catch (Exception e){
throw new RuntimeException("[XStream]XML转对象出错");
}
}
@Bean
public static ResourceLoader createResourceLoader() {
return new DefaultResourceLoader();
}
private static ResourceLoader resourceLoader = createResourceLoader();
public static void main(String[] args) throws IOException {
Resource resource = resourceLoader.getResource("classpath:/templates/xml/city.xml");
String xml = IOUtils.toString(resource.getInputStream(), "UTF-8");
CityList city = xmlToBean(CityList.class,xml);
System.out.println(city);
}
}
更多详细借鉴