求助!!在java中,怎样把读到的数据库表的信息直接输出为一个xml格式的文件啊?急!!(不确定哪个库的哪张表)麻烦的是不确定哪个库的哪张表,库名和表名在web页面给出,点击确定后,就要在指定路径下生成xml文件,xml文件格式内容是:
<根节点>
<字段名>字段中的数据</字段名>
<字段名>字段中的数据</字段名>
...
</根节点>

解决方案 »

  1.   

    直接设置contentType="text/xml; 消息体中就设置成xml文件格式就可了
      

  2.   

    你用jdom可以自己修改里面的代码 ,就能达到你的需求了
    自己上网下一个jdom.jar,再下一个示例,ok了
      

  3.   

    我以前都是根据格式定义自己写的用 metadata得到数据集合的列名,然后再拼凑字符串。
      

  4.   


    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);
    }数据量小直接可以用,但数据量大的话就要自己优化下了