-- 作者:jlive
-- 发布时间:4/7/2004 2:53:00 PM
-- jdom samples (1)
下面是我在去年研究并实践的xml样例,与兄弟一起分享 由数据库生成xml文件: package com.sz.xml; import com.sz.lgyw.util.DataSourceConn; import java.sql.*; import org.jdom.output.XMLOutputter; import org.jdom.Document; import java.io.IOException; import java.io.PrintWriter; import java.io.FileWriter; import com.sz.xml.log.Log; public class DatabaseToXml { // rs --> dom --> xml public static void generateXmlFromDatabase(ResultSet rs) { Document doc = GenerateXmlDom.GenerateDomFromDatabase(rs); XMLOutputter outputter = new XMLOutputter(" ", true); try { PrintWriter file = new PrintWriter(new FileWriter("testXml.xml", false), true); //outputter.output(doc, System.out); outputter.output(doc, file); } catch (IOException io) { Log.log("Err: ", io.getMessage()); io.printStackTrace(); } } public static void main(String args[]){ String sql = "select * from t_user"; ResultSet rs = null; DataSourceConn ds = new DataSourceConn(); rs = ds.executeQuery(sql); DatabaseToXml.generateXmlFromDatabase(rs); } } 存取xml里的数据到数据库里: package com.sz.xml; import java.text.DateFormat; import java.util.*; import org.jdom.*; import org.jdom.input.SAXBuilder; import org.jdom.output.XMLOutputter; import com.sz.lgyw.util.DataSourceConn; public class SaveXmlDataToDb { public static Document doc = null; public static Element rootElement = null; public static XMLOutputter outputter = null; public static List GetValues(String fileName,String nodeTag,int row) { initXML(fileName); List list = xml_get(nodeTag,row); return list; } public static void initXML(String fileName) { try { doc = xmlreadDocument(fileName); rootElement = doc.getRootElement(); outputter = new XMLOutputter(); outputter.setEncoding("GB2312"); } catch(JDOMException jdomexception) { jdomexception.printStackTrace(); } catch(Exception exception) { exception.printStackTrace(); } } public static Element xmlfindElement(Element element, String nodeTag) { Iterator iterator = element.getChildren().iterator(); if(element.getName().equals(nodeTag)) return element; while(iterator.hasNext()) { Element element1 = (Element)iterator.next(); Element element2 = xmlfindElement(element1, nodeTag); if(element2 != null) return element2; } return null; } public static Document xmlreadDocument(String fileName) throws Exception, JDOMException { SAXBuilder saxbuilder = new SAXBuilder(false); Document document = saxbuilder.build(fileName); return document; } public static void main(String args[]) throws Exception { List list=GetValues("catalog.xml","composition",5); ArrayList list2 = null; for (int i = 0; i < list.size(); i++) { list2 = (ArrayList) list.get(i); StringBuffer strBuf = new StringBuffer(); for(int ii=0 ;ii<list2.size();ii++){ strBuf.append(list2.get(ii).toString()); strBuf.append(" *** "); } System.out.println(strBuf.toString()); System.out.println(" ------------------ "); } } public static List xml_get(String nodeTag,int row) { List h = xmlgetData(rootElement,nodeTag,row); return h; } public static List xmlgetData(Element element, String nodeTag,int row) { ArrayList list = null; int i=0,j=0; Element element1 = xmlfindElement(element, nodeTag); System.out.println("<"+nodeTag+">"); if (element1==null) { return null; } else { if (element1.hasChildren()) { i=element1.getParent().getChildren(nodeTag).size(); j=element1.getChildren().size(); list = new ArrayList(i); for (int ii=0;ii<i;ii++) { element1=(Element) element1.getParent().getChildren(nodeTag).get(ii); ArrayList list2 = new ArrayList(j+1); for (int jj=0;jj<j;jj++) { list2.add(((Element) element1.getChildren().get(jj)).getText()); } list2.add(element1.getAttribute("composer").getValue()); list.add(list2); } } else { return null; } } return list; } }
|