/**
* TODO 使用xStream 实现xml字符和对象之间的转换
* <p>
* <!-- https://mvnrepository.com/artifact/com.thoughtworks.xstream/xstream -->
* <!-- xml字符串,对象之间互转 -->
* <dependency>
* <groupId>com.thoughtworks.xstream</groupId>
* <artifactId>xstream</artifactId>
* <version>${xstream.version}</version>
* </dependency>
*
* @author: geekswg@qq.com
* @since: 2020/8/1 10:31
*/
public class XmlUtils {
private static final XStream xStreamHelper = new XStream(new StaxDriver());
// 初始化配置
static {
XStream.setupDefaultSecurity(xStreamHelper);
xStreamHelper.allowTypesByWildcard(new String[]{"org.demo.springcloud.**"});
xStreamHelper.ignoreUnknownElements();//忽略未知节点
xStreamHelper.autodetectAnnotations(true);
}
public static <T> T xmlToBean(String xmlStr, Class<?> clazz) {
xStreamHelper.ignoreUnknownElements();//忽略未知节点
xStreamHelper.autodetectAnnotations(true);
xStreamHelper.processAnnotations(clazz);
return (T) xStreamHelper.fromXML(xmlStr);
}
public static <T> T xmlToBean(File xmlFile, Class<?> clazz) {
xStreamHelper.processAnnotations(clazz);
return (T) xStreamHelper.fromXML(xmlFile);
}
public static <T> String beanToXmlStr(T t) {
return xStreamHelper.toXML(t);
}
public static <T> boolean beanToXml(T t, String filePath){
boolean flag = true;
try {
FileWriter fileWriter = new FileWriter(new File(filePath));
fileWriter.write(xStreamHelper.toXML(t));
fileWriter.flush();
fileWriter.close();
} catch (IOException e) {
flag = false;
e.printStackTrace();
}finally {
return flag;
}
}
public static void main(String[] args) {
BsBankInfo bsBankInfo = new BsBankInfo();
bsBankInfo.setBankName("中国建设银行");
bsBankInfo.setBankNo("b10001");
String xmlStr = beanToXmlStr(bsBankInfo);
System.out.println("===>" + xmlStr);
System.out.println(xmlToBean(xmlStr, BsBankInfo.class).toString());
System.out.println(beanToXml(bsBankInfo, "d:/t.xml"));
}
}