用JAXB的小伙伴可以直接借鉴
第一步:新增一个生成xml文件方法
private void createXML(CEB621Message ceb621Message, String put) { File file = new File(put); JAXBContext jc = null; try { //根据Person类生成上下文对象 jc = JAXBContext.newInstance(CEB621Message.class); //从上下文中获取Marshaller对象,用作将bean编组(转换)为xml Marshaller ma = jc.createMarshaller(); //以下是为生成xml做的一些配置. //设置属性转换特殊字符串 ma.setProperty("com.sun.xml.internal.bind.marshaller.CharacterEscapeHandler", new CharacterEscapeHandler() { public void escape(char[] ch, int start, int length, boolean isAttVal, Writer writer) throws IOException { writer.write(ch, start, length); } }); //格式化输出,即按标签自动换行,否则就是一行输出 ma.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); //设置编码(默认编码就是utf-8) ma.setProperty(Marshaller.JAXB_ENCODING, "UTF-8"); //是否省略xml头信息,默认不省略(false) ma.setProperty(Marshaller.JAXB_FRAGMENT, false); //生成xml ma.marshal(ceb621Message, file); System.out.println("生成CEB621Message_" + ceb621Message.getInventory().get(0).getInventoryHead().getCopNo() + ".xml成功"); } catch (JAXBException e) { e.printStackTrace(); System.out.println("生成CEB621Message_" + ceb621Message.getInventory().get(0).getInventoryHead().getCopNo() + ".xml失败"); } }
第二步:调用方法
public static void main(String[] args) { //读取文件的存放目录 Map<String, String> path = new HashMap<String, String>(); try { path = m.getPaths(); System.out.println("获取到的path数据为:XML存放目录" + path.get("put") + ",海关回执目录" + path.get("read")); } catch (Exception e) { e.printStackTrace(); } //实体类赋值 StockCrossborderNotice stockCrossborderNotice = jsonArray.getObject(i, StockCrossborderNotice.class); //生成xml文件 String put = path.get("put") + "CEB621Message_" + fileName + ".xml"; //传入赋值了的实体类,和xml存放路径 m.createXML(ceb621Message, put); }