一个实例 楼主参考!
package com.xh.xml;
import java.io.FileOutputStream;
import java.io.IOException;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.output.XMLOutputter;
public class Java2XML {
public void BuildXMLDoc() throws IOException, JDOMException {
// 创建根节点 list;
Element root = new Element("list");
// 根节点添加到文档中;
Document Doc = new Document(root);
// 此处 for 循环可替换成 遍历 数据库表的结果集操作;
for (int i = 0; i < 5; i++) {
// 创建节点 user;
Element elements = new Element("user");
// 给 user 节点添加属性 id;
elements.setAttribute("id", "" + i);
// 给 user 节点添加子节点并赋值;
// new Element("name")中的 "name" 替换成表中相应字段,setText("xuehui")中 "xuehui 替换成表中记录值;
elements.addContent(new Element("name").setText("xuehui"));
elements.addContent(new Element("age").setText("28"));
elements.addContent(new Element("sex").setText("Male"));
// 给父节点list添加user子节点;
root.addContent(elements);
}
XMLOutputter XMLOut = new XMLOutputter();
// 输出 user.xml 文件;
XMLOut.output(Doc, new FileOutputStream("user.xml"));
}
public static void main(String[] args) {
try {
Java2XML j2x = new Java2XML();
System.out.println("生成 mxl 文件...");
j2x.BuildXMLDoc();
} catch (Exception e) {
e.printStackTrace();
}
}
}
生成的 user.xml 文件
<?xml version="1.0" encoding="UTF-8"?>
<list>
<user id="0">
<name>xuehui</name>
<age>28</age>
<sex>Male</sex>
</user>
<user id="1">
<name>xuehui</name>
<age>28</age>
<sex>Male</sex>
</user>
<user id="2">
<name>xuehui</name>
<age>28</age>
<sex>Male</sex>
</user>
<user id="3">
<name>xuehui</name>
<age>28</age>
<sex>Male</sex>
</user>
<user id="4">
<name>xuehui</name>
<age>28</age>
<sex>Male</sex>
</user>
</list>
解决方案 »
- MyBatis3.1.1 Insert 返回主键 long类型 MYSQL 数据库
- 请教excel报表导出之文本方式编辑excel 报表 xls csv xml
- 请教大家Struts+Hibernate登陆时关于“IllegalArgumentException”的问题,谢谢!!
- java中普通类中如何得到session
- 通过web service怎么返回一个复杂的类型
- 我发现在这个区里,人气不高,是不是从事这方面的人不多
- jbuilder 部署更新 jboss ejb 可是没有效果???
- Struts中如何同时添加多条记录?
- 关于J2EE的问题?
- 我都琢磨了一个礼拜了,还是搞不定!
- servlet获取值问题
- 用过lucene的come in
如果是用程序来写,1,从数据库拿数据,做树,做节点,做属性字段,分别把你需要的值放到树里边。在用io保存在本机上
剩下的就是得到表的信息:
......
PreparedStatement ps = conn.prepareStatement("select * from etl.letter where id=?");
......
ResultSetMetaData m = ps.getMetaData();
m.getColumnCount();//得到列数目
m.getColumnName(column);//得到列名
m.getColumnType(column);//得到类型
m.getPrecision(column);//得到精度
m.getScale(column);//得到范围
还有其他得到catalog, schema等等, 都有。
不用这个可以吗
我初步这样写的
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
// TODO Auto-generated method stub
List list=new ArrayList();
Session session=HibernateSessionFactory.getSession();
Transaction tr=session.beginTransaction();
tr.commit();
String statement = "from User";
list = session.createQuery(statement).list();
Element user;
Element username;
Element password;
Iterator iterator=list.iterator();
DocumentBuilderFactory documentbuilderfactory = DocumentBuilderFactory.newInstance();
try{
DocumentBuilder docBuilder = documentbuilderfactory.newDocumentBuilder();
Document doc = docBuilder.newDocument();
Element rootElement = doc.createElement("USER");
while(iterator.hasNext()){
user = doc.createElement("user");
user.setAttribute("userid",iterator.next().toString());
System.out.println(iterator.next().toString());
rootElement.appendChild(user); username = doc.createElement("username");
username.appendChild(doc.createTextNode(iterator.next().toString()));
user.appendChild(username); password = doc.createElement("password");
password.appendChild(doc.createTextNode(iterator.next().toString()));
user.appendChild(password);
}
doc.appendChild(rootElement);
//格式化XML 文档
OutputFormat outformat = new OutputFormat(doc);
//通过输出流创建XML
OutputStream os = new FileOutputStream("c:\\cdn\\xml\\DbToXml.xml");
// 通过XMLSerializer 生成XML 文档
XMLSerializer xmlserilizer = new XMLSerializer(os,outformat);
// 对文件进行写操作.
xmlserilizer.serialize(doc); }catch(Exception ex){
ex.printStackTrace();
}
return mapping.findForward("success");
}能生成.XML文件
但是结果是
<?xml version="1.0" encoding="UTF-8"?>
<USER><user userid="com.sh.hibernate.User@150f1d6"><username>com.sh.hibernate.User@1070a02</username><password>com.sh.hibernate.User@1223b12</password></user></USER>
那还不简单么?
比如你的表是user,对应的pojo是User,
String statement = "from User";
list = session.createQuery(statement).list();
那么这个list装的都是一个一个的User对象,那还不简单么? 给User对象添加一个toXMLString()方法:public class User{
String userId;
String name;
String password;
......
public String toXMLString(){
StringBuffer buffer = new StringBuffer();
buffer.append("<?xml version\1.0\" encoding=\"UTF-8\"?>")
.append("<USER>")
.append("<userid>").append(userId).append("</userid>")
(省略好多);
return buffer.toString();
}
}然后在你的execute方法里面new 一个文件, 把这个User对象toXMLString()然后写入文件不久可以了?