А что там знать XML сам по себе очень прост: открыли тег, записали информацию, закрыли тег и т.д.
Для Java выгрузка данных в файл будет выглядеть так:
| Код | public static void printResultSet(ResultSet rs, TransformerHandler handler) throws SQLException, SAXException { ResultSetMetaData meta = rs.getMetaData(); String[] columns = new String[meta.getColumnCount()]; for(int i = 0; i < columns.length; i++) columns[i] = meta.getColumnName(i + 1); while(rs.next()) { handler.startElement(null, null, "ROW", null); for(int i = 0; i < columns.length; i++) { handler.startElement(null, null, columns[i], null); String str = rs.getString(i + 1); if(str != null) handler.characters(str.toCharArray(), 0, str.length()); handler.endElement(null, null, columns[i]); } handler.endElement(null, null, "ROW"); } }
public static void main(String[] args) { try { Class.forName("oracle.jdbc.driver.OracleDriver"); Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@sb-srv:1521:ORCL", "scott", "tiger"); PreparedStatement ps = conn.prepareStatement("select * from TABLE1"); ResultSet rs = ps.executeQuery(); String tableName = rs.getMetaData().getTableName(1); if(tableName == null || tableName.equals("")) tableName = "ROWSET";
StreamResult out = new StreamResult(new File("C:\\TEMP\\data.xml")); SAXTransformerFactory tf = (SAXTransformerFactory) SAXTransformerFactory.newInstance(); TransformerHandler handler = tf.newTransformerHandler(); Transformer serializer = handler.getTransformer(); serializer.setOutputProperty(OutputKeys.INDENT, "yes");
handler.setResult(out); handler.startDocument();
handler.startElement("", "", tableName, null); printResultSet(rs, handler); handler.endElement("", "", tableName); handler.endDocument();
rs.close(); ps.close(); conn.close(); } catch(Exception ex) { ex.printStackTrace(); } } |
В результаете получим, что-то наподобие:
| Код | <?xml version="1.0" encoding="UTF-8"?> <ROWSET> <ROW> <ID>EA4CB32BDBA6405EA44F801B665667F5</ID> <TEXT>Treat Wolf</TEXT> </ROW> <ROW> <ID>A6B8245E7D0C49D38A8FB18F42EB7ED0</ID> <TEXT>Beverley Pride</TEXT> </ROW> <ROW> <ID>2EDE1EFAD8754FE085D09A153C9EBBA9</ID> <TEXT>Oliver Ifans</TEXT> </ROW> <ROW> <ID>5B822E809664421F8A9A7BAFAD706C0E</ID> <TEXT>Denzel Kingsley</TEXT> </ROW> <ROW> <ID>29C75041A34440D7ADD8BFC50B0C100B</ID> <TEXT>Stevie Tucker</TEXT> </ROW> <ROW> <ID>6222581350644D048EEA61FFD4043AB6</ID> <TEXT>Patricia Short</TEXT> </ROW> <ROW> <ID>D15D516CCF964794A5332934E7E0A85A</ID> <TEXT>Shelby Mirren</TEXT> </ROW> </ROWSET>
|
|