求助!!在java中,怎样把读到的数据库表的信息直接输出为一个xml格式的文件啊?急!!(不确定哪个库的哪张表) 求助!!在java中,怎样把读到的数据库表的信息直接输出为一个xml格式的文件啊?急!!(不确定哪个库的哪张表)麻烦的是不确定哪个库的哪张表,库名和表名在web页面给出,点击确定后,就要在指定路径下生成xml文件,xml文件格式内容是:<根节点><字段名>字段中的数据</字段名><字段名>字段中的数据</字段名>...</根节点> 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 直接设置contentType="text/xml; 消息体中就设置成xml文件格式就可了 你用jdom可以自己修改里面的代码 ,就能达到你的需求了自己上网下一个jdom.jar,再下一个示例,ok了 我以前都是根据格式定义自己写的用 metadata得到数据集合的列名,然后再拼凑字符串。 public static void main(String[] args) throws Exception { Connection conn = getConnection("jdbc:mysql://localhost:3306/photobookonline?useUnicode=true&characterEncoding=UTF-8", "root", "123456", "com.mysql.jdbc.Driver"); ByteArrayInputStream bais = new ByteArrayInputStream(export(conn, "template").getBytes("utf-8")); FileOutputStream fos = new FileOutputStream("c:/test.xml"); int len = 0; byte[] buffer = new byte[4096]; while ((len = bais.read(buffer)) != -1) { fos.write(buffer, 0, len); } fos.flush(); fos.close(); bais.close(); } public static String export(Connection conn, String tableName) throws Exception { PreparedStatement ps = conn.prepareStatement("select * from " + tableName); ResultSet rs = ps.executeQuery(); ResultSetMetaData rsmd = rs.getMetaData(); String[] cols = new String[rsmd.getColumnCount()]; for (int i = 0; i < rsmd.getColumnCount(); i++) { cols[i] = rsmd.getColumnName(i + 1); } StringBuffer sb = new StringBuffer(); sb.append("<?xml version=\"1.0\" encoding=\"utf-8\"?>"); sb.append("\r\n\r\n"); sb.append("<records>"); sb.append("\r\n"); while (rs.next()) { sb.append("\t<record>"); sb.append("\r\n"); for (String s : cols) { sb.append("\t\t<column name=\"" + s + "\">"); sb.append(rs.getObject(s)); sb.append("</column>"); sb.append("\r\n"); } sb.append("\t</record>"); sb.append("\r\n"); } sb.append("</records>"); rs.close(); ps.close(); conn.close(); return sb.toString(); } public static Connection getConnection(String url, String user, String password, String driver) throws Exception { Class.forName(driver); return DriverManager.getConnection(url, user, password); }数据量小直接可以用,但数据量大的话就要自己优化下了 一对多关系单向关系中多的一端怎么插入数据 java的问题,请大家帮帮忙! 问大家一个比较有技术含量的问题 在做一个EJB例子时,出现了这样的问题 一个spring问题 jbuilder调用XML问题????急!!! WinXP下weblogic Console无法显示左边树型菜单 Eclipse+Lomboz用Weblogic7做为Server启动后访问不了JSP? 简单问题,有哪些j2ee的服务器。 JAVA怎么刷新物化视图呢?困惑困惑困惑困惑困惑困惑 lucene搜索速度问题 头疼,hibernate+mysql中文乱码
自己上网下一个jdom.jar,再下一个示例,ok了
public static void main(String[] args) throws Exception {
Connection conn = getConnection("jdbc:mysql://localhost:3306/photobookonline?useUnicode=true&characterEncoding=UTF-8", "root", "123456", "com.mysql.jdbc.Driver");
ByteArrayInputStream bais = new ByteArrayInputStream(export(conn, "template").getBytes("utf-8"));
FileOutputStream fos = new FileOutputStream("c:/test.xml"); int len = 0;
byte[] buffer = new byte[4096];
while ((len = bais.read(buffer)) != -1) {
fos.write(buffer, 0, len);
}
fos.flush();
fos.close();
bais.close();
} public static String export(Connection conn, String tableName) throws Exception { PreparedStatement ps = conn.prepareStatement("select * from " + tableName);
ResultSet rs = ps.executeQuery();
ResultSetMetaData rsmd = rs.getMetaData();
String[] cols = new String[rsmd.getColumnCount()];
for (int i = 0; i < rsmd.getColumnCount(); i++) {
cols[i] = rsmd.getColumnName(i + 1);
} StringBuffer sb = new StringBuffer(); sb.append("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
sb.append("\r\n\r\n"); sb.append("<records>");
sb.append("\r\n");
while (rs.next()) {
sb.append("\t<record>");
sb.append("\r\n");
for (String s : cols) {
sb.append("\t\t<column name=\"" + s + "\">");
sb.append(rs.getObject(s));
sb.append("</column>");
sb.append("\r\n");
}
sb.append("\t</record>");
sb.append("\r\n");
}
sb.append("</records>"); rs.close();
ps.close();
conn.close(); return sb.toString();
} public static Connection getConnection(String url, String user, String password, String driver) throws Exception {
Class.forName(driver);
return DriverManager.getConnection(url, user, password);
}数据量小直接可以用,但数据量大的话就要自己优化下了