Convertendo o ResultSet para XML
Veja nesta dica como colocar os dados do ResultSet em um XML.
import java.sql.Connection;import java.sql.Statement;
import java.sql.Driver;import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData; import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.*;
import javax.xml.transform.stream.*;
import javax.xml.transform.dom.*;
import org.w3c.dom.Document;
import org.w3c.dom.Element; class JDBCapp {
static Connection con; public static void main (String args[]) {
ResultSet rs = null;
Statement stmt = null;
String sql; try {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder =factory.newDocumentBuilder();
Document doc = builder.newDocument();
Element results = doc.createElement("Results");
doc.appendChild(results); // conexão para um MDB ACCESS
con = AccessCon.getConnection();
sql = "select objet from Email";
stmt = con.createStatement();
rs = stmt.executeQuery(sql); ResultSetMetaData rsmd = rs.getMetaData();
int colCount = rsmd.getColumnCount(); while (rs.next()) {
Element row = doc.createElement("Row");
results.appendChild(row);
for (int ii = 1; ii <= colCount; ii++) {
String columnName = rsmd.getColumnName(ii);
Object value = rs.getObject(ii);
Element node = doc.createElement(columnName);
node.appendChild(doc.createTextNode(value.toString()));
row.appendChild(node);
}
} System.out.println(getDocumentAsXml(doc));
} catch (Exception e) {
e.printStackTrace();
}
finally {
try {
if (con != null) con.close();
if (stmt != null) stmt.close();
if (rs != null) rs.close();
} catch (Exception e) { }
}
} public static String getDocumentAsXml(Document doc)
throws TransformerConfigurationException, TransformerException {
DOMSource domSource = new DOMSource(doc);
TransformerFactory tf = TransformerFactory.newInstance();
Transformer transformer = tf.newTransformer();
//transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
transformer.setOutputProperty(OutputKeys.METHOD, "xml");
transformer.setOutputProperty(OutputKeys.ENCODING,"ISO-8859-1");
transformer.setOutputProperty(
"{http://xml.apache.org/xslt}indent-amount", "4");
transformer.setOutputProperty(OutputKeys.INDENT, "yes"); java.io.StringWriter sw = new java.io.StringWriter();
StreamResult sr = new StreamResult(sw);
transformer.transform(domSource, sr);
return sw.toString();
}
} class AccessCon {
public static Connection getConnection() throws Exception {
Driver d = (Driver)Class.forName(
"sun.jdbc.odbc.JdbcOdbcDriver").newInstance();
Connection c = DriverManager.getConnection("jdbc:odbc:Driver=
{Microsoft Access Driver (*.mdb)};DBQ=c:/temp/tech97.mdb"); return c;
/*
Para usar com outros bancos de dados
String URL = "jdbc:odbc:meuDSN";
Connection c = DriverManager.getConnection(URL, "usuario", "senha");
*/
}
}