【问题标题】:how to create XML file after retriving data from mysql DB?从 mysql DB 检索数据后如何创建 XML 文件?
【发布时间】:2018-02-23 01:21:02
【问题描述】:

我想在从 db 获取数据后创建一个 XML 文件,如下所示: 任何帮助将不胜感激,因为我是 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>

【问题讨论】:

  • 你现在的结果是什么?也许那时我可以看到问题的根源。但是为什么要在循环之前添加 标签呢?这导致第一行出现“”。
  • 你应该使用类似的库:stackoverflow.com/a/5059411/3959856
  • 对不起我的错误我删除了在此代码中错误添加的元素部分@fairtrax
  • @JackFlamp 你是对的,但我不想从那个 XML 代码解析我已经创建的 XML 文件只是演示我想用 java servlet 创建哪种类型的数据
  • @Haaseb Liaqat 那么您的输出 xml 有什么问题?它看起来怎么样?

标签: java mysql xml servlets


【解决方案1】:

您用于创建 XML 文件的方式是错误的,因为您对代码中的所有内容都进行了硬编码。假设您想在将来更改您的 XML 文件。更改 XML 会花费太多时间,而且对您来说也很乏味。因此,请按照以下文档链接创建 XML 文件,它将帮助您生成 XML 文件。

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

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

【讨论】:

  • 好的,我知道我会像这样更改我的代码,但我不知道如何实现上面在 XML 文件中给出的那种 XML 格式
  • 仔细阅读文档。您必须为结果集输出实现的一件事是“for 循环”。并在 thatloop 中编写文档的代码。
  • 这是真正的问题,我不知道如何制作这样的 for 循环,这让我得到了我想要的输出@ChetanTayade
猜你喜欢
  • 2015-10-21
  • 1970-01-01
  • 2015-09-12
  • 2018-10-13
  • 1970-01-01
  • 2023-01-20
  • 2015-07-21
  • 2012-04-13
相关资源
最近更新 更多