1.转换代码如下
package com.ihealthtek.jbagent.util; import javax.xml.bind.JAXBContext; import javax.xml.bind.JAXBException; import javax.xml.bind.Marshaller; import javax.xml.bind.Unmarshaller; import java.io.*; /** * 封装了XML转换成object,object转换成XML的代码 * * @author Steven * */ public class XMLUtil { /** * 将对象直接转换成String类型的 XML输出 * * @param obj * @return */ public static String convertToXml(Object obj) { // 创建输出流 StringWriter sw = new StringWriter(); try { // 利用jdk中自带的转换类实现 JAXBContext context = JAXBContext.newInstance(obj.getClass()); Marshaller marshaller = context.createMarshaller(); // 格式化xml输出的格式 marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE); // 将对象转换成输出流形式的xml marshaller.marshal(obj, sw); } catch (JAXBException e) { e.printStackTrace(); } return sw.toString(); } /** * 将对象根据路径转换成xml文件 * * @param obj * @param path * @return */ public static void convertToXml(Object obj, String path) { try { // 利用jdk中自带的转换类实现 JAXBContext context = JAXBContext.newInstance(obj.getClass()); Marshaller marshaller = context.createMarshaller(); // 格式化xml输出的格式 marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE); // 将对象转换成输出流形式的xml // 创建输出流 FileWriter fw = null; try { fw = new FileWriter(path); } catch (IOException e) { e.printStackTrace(); } marshaller.marshal(obj, fw); } catch (JAXBException e) { e.printStackTrace(); } } @SuppressWarnings("unchecked") /** * 将String类型的xml转换成对象 */ public static Object convertXmlStrToObject(Class clazz, String xmlStr) { Object xmlObject = null; try { JAXBContext context = JAXBContext.newInstance(clazz); // 进行将Xml转成对象的核心接口 Unmarshaller unmarshaller = context.createUnmarshaller(); StringReader sr = new StringReader(xmlStr); xmlObject = unmarshaller.unmarshal(sr); } catch (JAXBException e) { e.printStackTrace(); } return xmlObject; } @SuppressWarnings("unchecked") /** * 将file类型的xml转换成对象 */ public static Object convertXmlFileToObject(Class clazz, String xmlPath) { Object xmlObject = null; try { JAXBContext context = JAXBContext.newInstance(clazz); Unmarshaller unmarshaller = context.createUnmarshaller(); FileReader fr = null; try { fr = new FileReader(xmlPath); } catch (FileNotFoundException e) { e.printStackTrace(); } xmlObject = unmarshaller.unmarshal(fr); } catch (JAXBException e) { e.printStackTrace(); } return xmlObject; } }
2.
package com.ihealthtek.jbagent.domain.in; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; import java.util.List; //最外层根节点 @XmlRootElement(name="NETHIS") public class WnInArchiveList { List<WnInArchive> wnInArchives; //文件中的根标识 @XmlElement(name = "GW") public List<WnInArchive> getWnInArchives() { return wnInArchives; } public void setWnInArchives(List<WnInArchive> wnInArchives) { this.wnInArchives = wnInArchives; } }
3. package com.ihealthtek.jbagent.domain.in; import com.alibaba.fastjson.annotation.JSONField; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; import java.io.Serializable; @XmlAccessorType(XmlAccessType.FIELD) // XML文件中的根标识 @XmlRootElement(name = "GW") public class WnInArchive implements Serializable { /** * */ @XmlElement(name = "GRBJH") private String grbjh; @XmlElement(name = "DABH") private String dabh;
省略get set方法……
}
4.对象可以转换成xml格式String
String wnxml = XMLUtil.convertToXml(xxx);
5.xml转换为对象
WnOutArchiveList wn = (WnOutArchiveList)XMLUtil.convertXmlStrToObject(WnOutArchiveList.class,object);