Dom4j read and write xml

  /**
     * Generate reported xml data according to date
     * @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 generation completed]==>");

        // output file
        XMLWriter writer = null;
        String filePath = buildXmlFilePath(date);
        logger.info("[Document output file path]==>" + filePath);

        try{
            //output xml with format
            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 file writing completed]==>" + 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();//Create a document object to manipulate xml files
        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", "测试");
     }

    /**
     * target list
     * @param date
     * @param result
     * @param reportInfoElement
     */
    private void buildReport1Element(String date, Element reportInfoElement) {
        //report1 - project information
        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);
        }
    }

 

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=326076684&siteId=291194637