/** * 按照日期生成上报的xml数据 * @param date * @return */ public String buildXmlDataPath(String date) { //document long docmentStartTime = System.currentTimeMillis(); Document root = buildRootDocument(); //rootElement Element docElement = root.addElement(DOC);//docElement buildHeadElement(date, docElement);//headElement //reportInfo Element reportInfoElement = docElement.addElement(REPORTINFO); buildReport1Element(date,reportInfoElement); logger.info("【 Document生成完成】==>"); //输出文件 XMLWriter writer = null; String filePath = buildXmlFilePath(date); logger.info("【 Document输出文件路径】==>" + filePath); try{ //输出带有格式的xml OutputFormat format = OutputFormat.createPrettyPrint(); format.setEncoding(CHARSET_UTF_8); writer = new XMLWriter(new OutputStreamWriter(new FileOutputStream(filePath),CHARSET_UTF_8) ,format); writer.write(root); writer.flush(); logger.info("【 Document文件写入完成】==>" + filePath); }catch(Exception e){ logger.error(e.getMessage(),e); }finally { try { writer.close(); } catch (IOException e) { e.printStackTrace(); } } logger.info("生成上报XmlFile ==> "+filePath+" costs-time: " + (System.currentTimeMillis() - docmentStartTime )); return filePath; }
@NotNull private Document buildRootDocument() { Document root = DocumentHelper.createDocument();//建立document对象,用来操作xml文件 root.addDocType("your_root_name [\n" + "<!ENTITY nbsp \" \">\n" + "<!ENTITY copy \"©\">\n" + "<!ENTITY reg \"®\">\n" + "<!ENTITY trade \"™\">\n" + "<!ENTITY mdash \"—\">\n" + "<!ENTITY ldquo \"“\">\n" + "<!ENTITY rdquo \"”\"> \n" + "<!ENTITY pound \"£\">\n" + "<!ENTITY yen \"¥\">\n" + "<!ENTITY euro \"€\">\n" + "]","",""); return root; }
private void createSubElement(Element e,String elementName,String text){ Element reporterElement = e.addElement(elementName); if(StringUtils.isBlank(text)){ reporterElement.setText(""); }else{ reporterElement.setText(text); } } private Element createSubElement(Element e,String elementName){ return e.addElement(elementName); }
/** * headElement * @param date * @param docElement */ private void buildHeadElement(String date, Element docElement) { //Head Element headInfoElement = this.createSubElement(docElement,"head"); Element tablePElement = this.createSubElement(headInfoElement,"table"); tablePElement.addAttribute("name","DataHead"); this.createSubElement(tablePElement,"datadate",date); this.createSubElement(tablePElement,"code", "1"); this.createSubElement(tablePElement,"name", "测试"); } /** * 标的列表 * @param date * @param result * @param reportInfoElement */ private void buildReport1Element(String date, Element reportInfoElement) { //report1 - 项目信息 Element report1Element = this.createSubElement(reportInfoElement,"r1"); report1Element.addAttribute("name","001"); report1Element.addAttribute("type","DV"); Element recordElement = this.createSubElement(report1Element,"record"); this.createSubElement(recordElement,"id","1111"); this.createSubElement(recordElement,"date",date); } }