1. 程式人生 > 實用技巧 >xstream實現xml字串與物件直接的轉換

xstream實現xml字串與物件直接的轉換

/**
 * 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: [email protected] * @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")); } }