最近接到需求要对接票据交易系统,第三方系统使用XML报文传输业务数据对接中遇到传输多个相同对象的情况,这种我们可以使用list<T> lists形式转成对应的使用wrapper注解外层标签包裹list内容可以实现转xml文件,但是第三方系统应答报文中给了一个<BsInf/>[0..n]没有或者多个重复节点,这样的返回数据使用list接收出现报错情况所以查看资料后使用数组形式接收此xml,具体如下:,我来为大家科普一下关于java xml文件处理?以下内容希望对你有帮助!

java xml文件处理(JAXB之xml重复节点转JavaBean方法)

java xml文件处理

最近接到需求要对接票据交易系统,第三方系统使用XML报文传输业务数据。对接中遇到传输多个相同对象的情况,这种我们可以使用list<T> lists形式转成对应的使用wrapper注解外层标签包裹list内容可以实现转xml文件,但是第三方系统应答报文中给了一个<BsInf/>[0..n]没有或者多个重复节点,这样的返回数据使用list接收出现报错情况。所以查看资料后使用数组形式接收此xml,具体如下:

String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" "<MainBody>" "<student>" " <name>test</name>" " <age>12</age>" "</student>" "<student>" " <name>123</name>" " <age>13</age>" "</student>" "</MainBody>"; @Data @XmlRootElement(name = "MainBody") public class TestArrays{ @XmlElement(name = "student") private Student[] students; } @Data @XmlRootElement(name = "student") public class Student{ @XmlElement(name = "name") private String name; @XmlElement(name = "age") private String age; } // 转换方法 public static <T> T convertToJavaBean(String xml, Class<T> c) { T t = null; try { JAXBContext context = JAXBContext.newInstance(c); Unmarshaller unmarshaller = context.createUnmarshaller(); t = (T) unmarshaller.unmarshal(new StringReader(xml)); } catch (Exception e) { e.printStackTrace(); } return t; }

,