我所知道的java生成xml的方式基本的解析方式有两种,一种叫SAX,另一种叫DOM。SAX是基于事件流的解析,DOM是基于XML文档树结构的解析。
Object id = event.getItemId();
Document doc=DocumentHelper.createDocument();
//添加根节点
Element rootElement = doc.addElement("sbxx");
//将数据库中对应的信息导出为xml格式
String sql="select * from t_zbgz_xxsb where id="+id;
Connection conn = dbServices.getJDBCConnection();
PreparedStatement pstmt=null;
ResultSet rs=null;
try{
pstmt=conn.prepareStatement(sql);
rs=pstmt.executeQuery();
if(rs.next()){
ResultSetMetaData rsmd=rs.getMetaData();
int count=rsmd.getColumnCount();
for(int i=0;i<count;i++){
if(i==0){
rootElement.addAttribute("id",rs.getString(rsmd.getColumnName(1)));
}else{
String colName=rsmd.getColumnName(i+1);
String colVal=rs.getString(colName);
System.out.println(i+"==name=========="+colName+"----value-------"+colVal);
if(null!=colVal){
//添加非空的列为xml中sbxx的子节点
Element name = rootElement.addElement(colName);
name.setText(colVal);
}
}
}
}
}catch(Exception e){
e.printStackTrace();
}finally{
CloseResource.closePstmtConn(conn, pstmt);
}
try {
//问题关键,刚开始导出的时候OutputFormat对象是通过new直接拿过来的,出来的xml没有经过格式化很难看。而通 //过OutputFormat.createPrettyPrint()之后,得到的就是格式化了的xml.
OutputFormat fmt = OutputFormat.createPrettyPrint();
//创建输出格式对象
fmt.setEncoding("gb2312");
XMLWriter writer = new XMLWriter(fmt);
//以输出格式为参数,创建XML文件输出对象
OutputStream out = new FileOutputStream("d:\\test2.xml");
//创建输出流..
writer.setOutputStream(out);
//设置输出流
writer.write(doc);
//输出doc对象,即形成XML文件
} catch (Exception e) {
e.printStackTrace();
}