从mysql DB中恢复数据后如何创建XML文件?

时间:2017-09-14 07:06:58

标签: java mysql xml servlets

我希望在从db获取数据之后创建一个XML文件,如下所示:my db table looks like this任何帮助都会受到赞赏,因为我是java Servlet创建XML文件的新手。

我希望由servlet创建的XML文件:

   <?xml version="1.0" encoding="UTF-8"?>
      <root>
       <expanded>true</expanded>
     <children>
     <element>
        <text>Setup</text>
        <leaf>false</leaf>
        <iconCls>x-fa fa-gears</iconCls>
        <cls>mainNav</cls>
        <children>
            <element>
                <leaf>false</leaf>
                <text>Academics</text>
                <iconCls>x-fa fa-graduation-cap</iconCls>
                <cls>mainNav</cls>
                <children>
            <element>
                <leaf>true</leaf>
                <text>Session</text>
                <iconCls>x-fa fa-star</iconCls>
                <cls>PIU.view.setup.academics.AcademicSession</cls>
            </element>
            <element>
                <leaf>true</leaf>
                <text>Faculty</text>
                <iconCls>x-fa fa-star-o</iconCls>
                <cls>PIU.view.setup.academics.AcademicFaculty</cls>
            </element>
            <element>
                <leaf>true</leaf>
                <text>Shifts</text>
                <iconCls>x-fa fa-star-o</iconCls>
                <cls>PIU.view.setup.academics.MaintainShifts</cls>
            </element>
           </children>
            </element>
            <element>
                <leaf>false</leaf>
                <text>Institution</text>
                <iconCls>x-fa fa-university</iconCls>
                <cls>mainNav</cls>
            <children>
            <element>
                <leaf>true</leaf>
                <text>Institution</text>
                <iconCls>x-fa fa-globe</iconCls>
                <cls>PIU.view.setup.institution.DefineInstitution</cls>
            </element>
            <element>
                <leaf>true</leaf>
                <text>Facilities</text>
                <iconCls>x-fa fa-building</iconCls>
                <cls>PIU.view.setup.institution.MaintainFacilities</cls>
            </element>
            <element>
                <leaf>true</leaf>
                <text>Letter Head</text>
                <iconCls>x-fa fa-info</iconCls>
            </element>
          </children>
              </element>
           </children>
          </element>
        </children> 
     </root>

到目前为止,我已经尝试了这个没有生成我想要的结果请帮助我:

   protected void doGet(HttpServletRequest request, HttpServletResponse 
    response) throws ServletException, IOException {
    // TODO Auto-generated method stub
    response.setContentType("text/xml");
    String reportName =  "GenerateXML_Report_"
            +System.currentTimeMillis()+".xml";     
    response.setHeader("Content-disposition", "attachment; " +
            "filename=" + reportName);   

    try{    
        Datasource ds=new Datasource();
        ds.connect();
        java.sql.Statement s=ds.createStatement();
        ResultSet rs = s.executeQuery("Select label,action,icon_cls,leaf from common_features where is_visible=1");

    ArrayList<String> rows = new ArrayList<String>();
    rows.add("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
    rows.add("<root>"); 
    rows.add("<expanded>true</expanded>");
    rows.add("<children>");
    while(rs.next()) 
    { 
        rows.add("<element>");
        rows.add("<leaf>");
        rows.add(rs.getString(4));
        rows.add("</leaf>");
        rows.add("<text>");
        rows.add(rs.getString(1));
        rows.add("</text>");
        rows.add("<iconCls>");
        rows.add(rs.getString(3));
        rows.add("</iconCls>");
        rows.add("<cls>");
        rows.add(rs.getString(2));
        rows.add("</cls>");
        rows.add("</element>");

    }
    rows.add("</children>");
    rows.add("</root>"); 

    Iterator<String> iter = rows.iterator();
    while (iter.hasNext()){
        String outputString = (String) iter.next();
        response.getOutputStream().print(outputString);
    }
    ds.dropConnection();  
    } catch (Exception ex) {
        ex.printStackTrace();
    }
    //out.println(jobject);
    response.getOutputStream().flush();


}

目前我生成的xml文件如下所示:

  <?xml version="1.0" encoding="UTF-8"?>
<root>
 <expanded>true</expanded>
  <children>
    <element>
        <leaf>true</leaf>
        <text>Institution</text>
        <iconCls>x-fa fa-globe</iconCls>
        <cls>PIU.view.setup.institution.DefineInstitution</cls>
    </element>
    <element>
        <leaf>true</leaf>
        <text>Facilities</text>
        <iconCls>x-fa fa-building</iconCls>
        <cls>PIU.view.setup.institution.MaintainFacilities</cls>
    </element>
    <element>
        <leaf>true</leaf>
        <text>Session</text>
        <iconCls>x-fa fa-star</iconCls>
        <cls>PIU.view.setup.academics.AcademicSession</cls>
    </element>
    <element>
        <leaf>true</leaf>
        <text>Faculty</text>
        <iconCls>x-fa fa-star-o</iconCls>
        <cls>PIU.view.setup.academics.AcademicFaculty</cls>
    </element>
    <element>
        <leaf>true</leaf>
        <text>Shifts</text>
        <iconCls>x-fa fa-star-o</iconCls>
        <cls>PIU.view.setup.academics.MaintainShifts</cls>
    </element>
    <element>
        <leaf>false</leaf>
        <text>Setup</text>
        <iconCls>x-fa fa-gears</iconCls>
        <cls>mainNav</cls>
    </element>
    <element>
        <leaf>false</leaf>
        <text>Academics</text>
        <iconCls>x-fa fa-graduation-cap</iconCls>
        <cls>mainNav</cls>
    </element>
    <element>
        <leaf>false</leaf>
        <text>Institution</text>
        <iconCls>x-fa fa-university</iconCls>
        <cls>mainNav</cls>
      </element>
   </children>
 </root>

1 个答案:

答案 0 :(得分:0)

您用于创建XML文件的方式是错误的,因为您对代码中的所有内容进行了硬编码。假设您希望将来更改XML文件。您需要花费太多时间来更改XML也非常繁琐。因此,请按照以下文档链接创建XML文件,它将帮助您生成XML文件。

https://www.mkyong.com/java/how-to-create-xml-file-in-java-dom/

如果您对实施有任何疑问,请告诉我。