java 连接数据库并生成XML的小问题 附上源码
数据库表结构如下:
pid:图片ID
topic: 图片评论
pURL:图片连接 其实存的是文件名
cDate:图片上传日期
想生成的XML格式如下:
<?xml version="1.0" encoding="utf-8" ?>
<main>
<mh m="3" y="2008">
<ds d="21" bURL="7-11.jpg" pid="1" />
<ds d="22" bURL="7-11.jpg" pid="2" />
<ds d="28" bURL="7-11.jpg" pid="3"/>
<ds d="29" bURL="7-11.jpg" pid="4"/>
</mh>
<mh m="4" y="2008">
<ds d="12" bURL="7-11.jpg" pid="5" />
<ds d="13" bURL="7-11.jpg" pid="6"/>
<ds d="14" bURL="7-11.jpg" pid="7"/>
<ds d="15" bURL="7-11.jpg" pid="8" />
</mh>
....
</main>
我写的代码,只是格式有点小差异。不知道用什么样的办法遍历数据库能生成想要的格式。代码如下:
public void BuildXMLDocImage() throws IOException, JDOMException {
// 创建根节点 list;
Element root = new Element("main");
// 根节点添加到文档中;
Document Doc = new Document(root);
Connection conn = DB.getConn();
String sql = "select * from cartoon";
Statement stmt = DB.getStatement(conn);
ResultSet rs = DB.getResultSet(stmt, sql);
//System.out.println(u_name);
try {
while (rs.next()) {
Date d = rs.getDate("cDate");
Calendar c = Calendar.getInstance();
c.setTime(d);
// 创建节点 user;
Element elements = new Element("mh");
Element elements1 = new Element("ds");
elements1.setAttribute("d", "" + c.get(Calendar.DAY_OF_MONTH));//天数
elements1.setAttribute("bURL", "" + rs.getString("bURL"));//图片地址
elements1.setAttribute("pid", "" + rs.getString("pid"));//图片ID
// 给 user 节点添加属性 id;
elements.setAttribute("m", "" + c.get(Calendar.MONTH));//月份
elements.setAttribute("y",""+c.get(Calendar.YEAR));//年份
// 给 user 节点添加子节点并赋值;
// new Element("name")中的 "name" 替换成表中相应字段,setText("xuehui")中 "xuehui 替换成表中记录值;
elements.addContent(elements1);
/// elements.addContent(new Element("age").setText("28"));
// elements.addContent(new Element("sex").setText("Male"));
// 给父节点list添加user子节点;
root.addContent(elements);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
DB.close(rs);
DB.close(stmt);
DB.close(conn);
}
// 此处 for 循环可替换成 遍历 数据库表的结果集操作;
// for (int i = 0; i < 5; i++) {
// }
XMLOutputter XMLOut = new XMLOutputter();
ss=XMLOut.outputString(root); //需要在jsp里打印出来,所以做了这个处理
// 输出 user.xml 文件;
// XMLOut.output(Doc, new FileOutputStream("d:/imageXML.xml"));
//System.out.println(Doc);
}
大家给看下,给小弟出出主意,先谢了。在线等!