Dom4j读取写入xml

  /**
     * 按照日期生成上报的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);
        }
    }

猜你喜欢

转载自wo-niu.iteye.com/blog/2415504