java读取oracle数据库数据,之后生成xml格式字符串,在线求解。 你用dom4j jdom 来做很简单 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 目前使用Iterator<TestFile> it = list.iterator();while (it.hasNext()) {file = it.next(); 这样方式只能显示所有数据,不能分层次显示出来,急求解决办法。应该是需要递归,未实现出来。 这个算法本身不算复杂,主要就两个个关键点:1、利用Oracle提供的父子连接:connect by prior my_id = parent_id; 就可以得到有序结果。2、写一个递归函数来根据结果集产生带层次结构的XML就行了。 import java.io.FileWriter;import java.io.IOException;import org.dom4j.Document;import org.dom4j.DocumentHelper;import org.dom4j.Element;import org.dom4j.io.OutputFormat;import org.dom4j.io.XMLWriter;import org.xml.sax.DocumentHandler;public class BuildBookDemo {//将数据加载到xml /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub String[][] data={ {"1001","wuxia","tianlongbabu1","50","jinyong","1968","cn"}, {"1002","wuxia","tianlongbabu2","50","jinyong","1968","cn"}, {"1003","xuanhuan","tianlongbabu3","50","jinyong","1968","cn"}, {"1004","wuxia","tianlongbabu4","50","jinyong","1968","cn"} }; buildBook(data,"mybook.xml"); } public static void buildBook(String[][] data,String filename){ Document doc=DocumentHelper.createDocument(); Element rootElmt=doc.addElement("booklist"); for(String[] book:data){ Element bookElmt=rootElmt.addElement("book"); Element title=bookElmt.addElement("title"); title.setText(book[2]); Element prise=bookElmt.addElement("price"); prise.setText(book[3]); Element author=bookElmt.addElement("author"); author.setText(book[4]); Element year=bookElmt.addElement("year"); year.setText(book[5]); bookElmt.addAttribute("isbn",book[0]); bookElmt.addAttribute("catalog",book[1]); title.addAttribute("lang", book[6]); } outputXml(doc,filename); } private static void outputXml(Document doc, String filename) { // TODO Auto-generated method stub try { FileWriter fw=new FileWriter(filename); OutputFormat format=OutputFormat.createPrettyPrint(); format.setEncoding("utf-8"); XMLWriter xw=new XMLWriter(fw,format); xw.write(doc); xw.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }数据读出来,生产xml 思路好说,用递归fun(int pid,grade){String sql ="select * from table where pid ="+pid;//求出结果放入List<List<String>> lists 把 id ,pid 成对放入list中遍历listfor(List alist:lists){int count=1;String str ="<file" + pid==0?"":count + " id=\""+ alist.get(0) +"\" parentid=\""+alist.get(1) +"\"> \r\n </file" + pid==0?"":count> \r\n";fun(alist.get(0),grade+1);count++;}} 尝试写个伪代码:String export(rs, upperid) { if (upperid == 0) rs.next(); String ret = ""; while (!rs.eof()) { String pid = rs.get(pid); if (pid.equals(upperid)) { String id = rs.get(id); ret += "<file " ....; if (rs.next()) ret += export(rs, id); ret +="</file>"; } else { break; } } return ret;}执行:export(rs, 0); 新手遇到难题!大家帮忙! 多线程的动态剪刀石头布程序,新手一起学习! 如此简单却不知道:SWT中如何Dialog 看到了java编的桌面软件,散分 請問南方人是否平均java技術高一些? 请问如何使用java编程实现打开word文件 关于java的一个简单问题,请各位高手解答! 请帮看一下关于RMI的错误,谢拉!!!! 求g723的压缩算法?急!! assertion wrapper 是什么?帮忙解释一下。为什么在docs里面查不到?! java导出csv格式的证件号码 不显示科学计数法 wait(0)有什么用?
1、利用Oracle提供的父子连接:connect by prior my_id = parent_id; 就可以得到有序结果。
2、写一个递归函数来根据结果集产生带层次结构的XML就行了。
import java.io.FileWriter;
import java.io.IOException;import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;
import org.xml.sax.DocumentHandler;public class BuildBookDemo {//将数据加载到xml /**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String[][] data={
{"1001","wuxia","tianlongbabu1","50","jinyong","1968","cn"},
{"1002","wuxia","tianlongbabu2","50","jinyong","1968","cn"},
{"1003","xuanhuan","tianlongbabu3","50","jinyong","1968","cn"},
{"1004","wuxia","tianlongbabu4","50","jinyong","1968","cn"}
};
buildBook(data,"mybook.xml"); }
public static void buildBook(String[][] data,String filename){
Document doc=DocumentHelper.createDocument();
Element rootElmt=doc.addElement("booklist");
for(String[] book:data){
Element bookElmt=rootElmt.addElement("book");
Element title=bookElmt.addElement("title");
title.setText(book[2]);
Element prise=bookElmt.addElement("price");
prise.setText(book[3]);
Element author=bookElmt.addElement("author");
author.setText(book[4]);
Element year=bookElmt.addElement("year");
year.setText(book[5]);
bookElmt.addAttribute("isbn",book[0]);
bookElmt.addAttribute("catalog",book[1]);
title.addAttribute("lang", book[6]);
}
outputXml(doc,filename);
}
private static void outputXml(Document doc, String filename) {
// TODO Auto-generated method stub
try {
FileWriter fw=new FileWriter(filename);
OutputFormat format=OutputFormat.createPrettyPrint();
format.setEncoding("utf-8");
XMLWriter xw=new XMLWriter(fw,format);
xw.write(doc);
xw.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
数据读出来,生产xml
fun(int pid,grade){
String sql ="select * from table where pid ="+pid;
//求出结果放入List<List<String>> lists 把 id ,pid 成对放入list中
遍历list
for(List alist:lists){
int count=1;
String str ="<file" + pid==0?"":count + " id=\""+ alist.get(0) +"\" parentid=\""+alist.get(1) +"\"> \r\n </file" + pid==0?"":count> \r\n";
fun(alist.get(0),grade+1);
count++;
}
}
String export(rs, upperid) {
if (upperid == 0) rs.next();
String ret = "";
while (!rs.eof()) {
String pid = rs.get(pid);
if (pid.equals(upperid)) {
String id = rs.get(id);
ret += "<file " ....;
if (rs.next()) ret += export(rs, id);
ret +="</file>";
} else {
break;
}
}
return ret;
}执行:export(rs, 0);