在java项目开发中,在与银行系统对接的时候,银行系统一般都是标准的xml格式;此时就需要转换;在此介绍一款好用的xml转换工具。SpringBoot框架搭建
1.框架用到了
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency>
<!--lombok--> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency>
2.工具类
public class XMLUtil { /** * xml字符串转对象 * * @param clazz * @param xmlStr * @return */ public static Object xmlStrToObject(Class clazz, String xmlStr) { Object xmlObject = null; StringReader sr = null; try { JAXBContext context = JAXBContext.newInstance(clazz); // 进行将Xml转成对象的核心接口 Unmarshaller unmarshaller = context.createUnmarshaller(); sr = new StringReader(xmlStr); xmlObject = unmarshaller.unmarshal(sr); } catch (JAXBException e) { e.printStackTrace(); } finally { if (sr != null) { sr.close(); } } return xmlObject; } /** * 对象转xml字符串 * * @param obj * @param load * @return * @throws JAXBException */ public static String objectToXmlStr(Object obj, Class<?> load) { String result = ""; StringWriter writer = null; try { JAXBContext jaxbContext = JAXBContext.newInstance(obj.getClass()); Marshaller jaxbMarshaller = jaxbContext.createMarshaller(); jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); jaxbMarshaller.setProperty(Marshaller.JAXB_FRAGMENT, Boolean.TRUE); writer = new StringWriter(); writer.write("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"); jaxbMarshaller.marshal(obj, writer); result = writer.toString(); } catch (JAXBException e) { e.printStackTrace(); } finally { try { if (writer != null) { writer.close(); } } catch (IOException e) { e.printStackTrace(); } } return result; } }
3.测试类
@Data @XmlAccessorType(XmlAccessType.FIELD) @XmlRootElement(name = "user") public class User { @XmlElement(name="name") private String name; @XmlElement(name="age") private int age; @XmlElement(name="sex") private String sex; public static void main(String[] args){ User user = new User(); user.setName("work poorer"); user.setAge(20); user.setSex("男"); String res = XMLUtil.objectToXmlStr(user,User.class); System.out.println(res); User u = (User)XMLUtil.xmlStrToObject(User.class,res); System.out.println(u.toString()); } } 4 输出结果
注意一点:工具中报文如果不涉及<?xml version="1.0" encoding="utf-8"?>
则注销工具类中的
writer.write("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n");
代码