xml文档:
<?xml version="1.0" encoding="UTF-8"?>
<address>
<addressBook>
<bookid>a01</bookid>
<bookname>Digital</bookname>
</addressBook>
</address>现在oracle中建表。
java代码:
package address;import java.io.File;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;public class AddressBook { public static void main(String[] args) {
try{
String bookid;
String bookname;
String sql;

String url="jdbc:oracle:thin:@localhost:1521:myoracle";
String usename="tom";
String password="tom";

Class.forName("oracle.jdbc.driver.OracleDriver");
Connection con=DriverManager.getConnection(url,usename,password);
Statement st=con.createStatement();
File ff=new File("addr_book.xml");
DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();
DocumentBuilder db=dbf.newDocumentBuilder();
Document doc=db.parse(ff);

NodeList nl=doc.getElementsByTagName("address");
for(int i=0;i<nl.getLength();i++){
Element element=(Element)nl.item(i);
bookid=element.getElementsByTagName("bookid").item(0).getFirstChild().getNodeValue();
bookname=element.getElementsByTagName("bookname").item(0).getFirstChild().getNodeValue();
sql="insert into addr_book values('"+bookid+"','"+bookname+"')";
st.executeUpdate(sql);
}
System.out.println("已完成");
st.close();
con.close();
}catch(Exception e){
e.printStackTrace();
}
}
}

解决方案 »

  1.   

    我晕,好长啊.C#里边只用几句就OK了.因为ado.net本身就是建在XML基础之上.
      

  2.   

    rickhunterchen(千山鸟飞绝)多谢,可我的字段有很多找了点资料,我的程序运行到OracleXMLSave这一步的时候就不在往下面执行了,不知道问题出在什么地方请指教!
       public void xmlsave(String op_id,String xml_data)  {
         //定义数据库连接类
        try {
          Connection conn = getConnection(); // 建立连接
            OracleXMLSave sav = new OracleXMLSave(conn, "temp_dd_cs03");
            //URL url = sav.createURL(xml_data);
            sav.insertXML(xml_data);
            System.out.println("OUTPUT IS :\n"+sav);
            sav.close();
          }
        catch (SQLException ex) {
          System.out.println(ex.toString());
        }   }
      

  3.   

    仅仅是要把XML存到数据库中么?
    为什么不把文档存到一个列中去,要用的时候取出来再解析成dom,你有多少字段都搞得定,还不受字段增删得限制