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