package com.sql.xml; import java.io.File; import java.io.FileOutputStream; import java.io.FileWriter; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; import org.dom4j.Document; import org.dom4j.DocumentHelper; import org.dom4j.Element; import org.dom4j.io.OutputFormat; import org.dom4j.io.XMLWriter; //導出數據存入XML public class ReadDb { public static void main(String args[]){ //連接數據庫 try{ //數據庫連接 String url="jdbc:oracle:thin:@10.0.3.18:1521:hxtest18"; String classforname="oracle.jdbc.driver.OracleDriver"; String usename="zhiyong"; String password="password"; Class.forName(classforname); Connection con=DriverManager.getConnection(url,usename,password); Statement sta=con.createStatement(); //查詢數據 ResultSet result=sta.executeQuery( "SELECT * FROM study"); //創建根節點 Document document=DocumentHelper.createDocument(); Element studyInfo=DocumentHelper.createElement("studyInfo"); document.setRootElement(studyInfo); //Element studyInfo=document.addElement("studyInfo"); //當有值時查詢 while(result.next()){ //增加每個節點 Element study=studyInfo.addElement("study"); Element id=study.addElement("id"); Element student=study.addElement("student"); Element classe=study.addElement("class"); Element teacher=study.addElement("teacher"); Element age=study.addElement("age"); //將數據庫值通過SETTEXT爲XML值 id.setText(result.getString("id")); student.setText(result.getString("student")); //System.out.println(id.getText()); classe.setText(result.getString("class")); teacher.setText(result.getString("teacher")); age.setText(result.getString("age")); } //將樹導出到文件中:兩種輸出方法 XMLWriter write=new XMLWriter(new FileOutputStream(new File("studyInfo.xml"))); write.write(document); write.close(); }catch(Exception e){ e.printStackTrace(); } } } 插入數據庫,改了幾個條件 bookstore.xml文件如下 <?xml version="1.0" encoding="UTF-8"?> <bookstore> <book has="100"> <bname>數據庫</bname> <price>33.80元</price> <date>2009-10-1</date> </book> <book has="95"> <bname>三國演義</bname> <price>40.00元</price> <date>2005-1-7</date> </book> <book has="86"> <bname>西遊記</bname> <price>30.00元</price> <date>2004-3-8</date> </book> <cd have="15"> <id>1</id> <cname>beyound</cname> <owner>小黎</owner> </cd> <cd have="17"> <id>2</id> <cname>kugou</cname> <owner>小強</owner> </cd> </bookstore> 解析如下 package com.sql.xml; import java.io.File; import java.io.FileWriter; import java.sql.Connection; import java.sql.DriverManager; import java.util.Iterator; import org.dom4j.Attribute; import org.dom4j.Document; import org.dom4j.Element; import org.dom4j.DocumentException; import org.dom4j.io.SAXReader; import org.dom4j.io.XMLWriter; import org.dom4j.io.OutputFormat; //XML的解析與轉換後存入數據庫 public class Fenkai { public static void main(String args[]){ String sql,BNAME=null,PRICE=null,DAT=null;//定義數據庫表段 String sqlatt,CNAME=null,ID=null,OWNER=null; //讀取xml文件 SAXReader reader=new SAXReader(); File file=new File("bookstore.xml"); try{ //數據庫連接 String url="jdbc:oracle:thin:@10.0.3.18:1521:hxtest18"; String classforname="oracle.jdbc.driver.OracleDriver"; String usename="zhiyong"; String password="password"; Class.forName(classforname); Connection con=DriverManager.getConnection(url,usename,password); //解析xml文件 Document document=reader.read(file); Element root=document.getRootElement();//根節點 System.out.println("輸出根節點:"+root.getName()); //下面用迭代得到子節點和孫節點 for(Iterator child=root.elementIterator();child.hasNext();){ Element childEle=(Element)child.next(); System.out.println("子:"+childEle.getName()); System.out.println("孫:"); for(Iterator grand=childEle.elementIterator();grand.hasNext();){ Element grandEle=(Element)grand.next(); System.out.println(grandEle.getName()+"值:"+grandEle.getText()); //轉換數據 while(grandEle.getText().equals("數據庫")){ grandEle.setText("001"); } while(grandEle.getText().equals("三國演義")){ grandEle.setText("002"); } while(grandEle.getText().equals("西遊記")){ grandEle.setText("003"); } while(grandEle.getText().equals("beyound")){ grandEle.setText("004"); } while(grandEle.getText().equals("kugou")){ grandEle.setText("005"); } }} //得到各節點值插入數據庫 for(Iterator it= root.elementIterator("book");it.hasNext();){ Element ch=(Element)it.next(); BNAME=ch.elementText("bname"); PRICE=ch.elementText("price"); DAT=ch.elementText("date"); // while(childEle.getName().equals("cd")){} sql="insert into book values('"+BNAME+"','" +PRICE +"','"+DAT+"')"; //sql="select * from book";//加入本語句運行不改變數據表 //執行 con.createStatement().executeUpdate(sql);} for(Iterator itt= root.elementIterator("cd");itt.hasNext();){ Element cht=(Element)itt.next(); CNAME=cht.elementText("cname"); ID=cht.elementText("id"); OWNER=cht.elementText("owner"); sqlatt="insert into cd values('"+CNAME+"','" +ID +"','"+OWNER+"')"; //sqlatt="select * from cd"; con.createStatement().executeUpdate(sqlatt);} //將轉換後文件存入txt OutputFormat format=OutputFormat.createPrettyPrint(); format.setEncoding("gbk"); XMLWriter writer = new XMLWriter( new FileWriter(new File("bookchange.txt")),format); writer.write(document); writer.close(); System.out.println(document.asXML());//打印改變後的樹 }catch(Exception e){ e.printStackTrace(); System.out.println("有錯啊!"); } } }
解析數據庫生成XML文件及解析XML文件插入數據庫
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.