【发布时间】: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 有什么问题?它看起来怎么样?