用castor build utility先生成java files.
然后用root class的unmarshall() unmarshall the xml file to Stream.
数据库里建一个Blob的column,就可以放进去了。
拿出来,就是倒过来做。
没有办法给实例,至少有几十行code.
然后用root class的unmarshall() unmarshall the xml file to Stream.
数据库里建一个Blob的column,就可以放进去了。
拿出来,就是倒过来做。
没有办法给实例,至少有几十行code.
例子:
首先create table people(name varchar2(20),
address varchar2(50),
tel varchar2(20),
fax varchar2(20),
email varchar2(50));
import java.sql.*;
import javax.xml.parsers.*;
import org.w3c.dom.*;public class xml2db
{
static Connection con;
static String nm,add,tel,fax,email,sql;
static String url = "jdbc:oracle:oci8:@LEO";
public static void main(String args[])
{
try
{
Class.forName("oracle.jdbc.driver.OracleDriver");
con = DriverManager.getConnection(url,"scott","tiger");
Statement stmt = con.createStatement();
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse("candidate.xml");
NodeList nl = doc.getElementsByTagName("PERSON");
for(int i=0;i<nl.getLength();i++)
{
Element node=(Element)nl.item(i);
String nm = node.getElementsByTagName("NAME").item(0).getFirstChild().getNodeValue();
String add =node.getElementsByTagName("ADDRESS").item(0).getFirstChild().getNodeValue();
String tel = node.getElementsByTagName("TEL").item(0).getFirstChild().getNodeValue();
String fax = node.getElementsByTagName("FAX").item(0).getFirstChild().getNodeValue();
String email = node.getElementsByTagName("EMAIL").item(0).getFirstChild().getNodeValue();
sql = "insert into people values(\'" + nm +"\',\'"+add+"\',\'"+tel+"\',\'"+fax+"\',\'"+email+"\')";
int ret = stmt.executeUpdate(sql);
}
stmt.close();
con.close();
}
catch(Exception e)
{
e.printStackTrace();
}
}
}javac -classpath .;classes12.zip xml2db.java
java -classpath .;classes12.zip xml2db
运行!
用JDBC将数据库中数据取出生成XML文件import java.sql.*;
import javax.xml.parsers.*;
import java.io.*;
import org.apache.crimson.tree.*;
import org.w3c.dom.*;public class db2xml
{
static ResultSet results;
static Connection con;
static String nm,add,tel,fax,email,sql;
static String url = "jdbc:oracle:oci8:@LEO";
public static void main(String args[])
{
Document doc;
Element people = null;
Element person = null;
Element name = null;
Element address = null;
Element tel = null;
Element fax = null;
Element email = null;
try
{
Class.forName("oracle.jdbc.driver.OracleDriver");
con = DriverManager.getConnection(url,"scott","tiger");
Statement stmt = con.createStatement();
results = stmt.executeQuery("SELECT * FROM PEOPLE");
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = dbf.newDocumentBuilder();
doc = builder.newDocument();
people = doc.createElement("PEOPLE");
while(results.next())
{
person = doc.createElement("PERSON");
people.appendChild(person);
name = doc.createElement("NAME");
name.appendChild(doc.createTextNode(results.getString("NAME")));
person.appendChild(name);
address = doc.createElement("ADDRESS");
address.appendChild(doc.createTextNode(results.getString("ADDRESS")));
person.appendChild(address);
tel = doc.createElement("TEL");
tel.appendChild(doc.createTextNode(results.getString("TEL")));
person.appendChild(tel);
fax = doc.createElement("FAX");
fax.appendChild(doc.createTextNode(results.getString("EMAIL")));
email = doc .createElement("EMAIL");
email.appendChild(doc.createTextNode(results.getString("EMAIL")));
person.appendChild(email);
}
doc.appendChild(people);
((XmlDocument)doc).write(new FileOutputStream(new File("people.xml")));
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
javac -classpath classes12.zip db2xml.java
java -classpath classes12.zip db2xml
运行!
<PEOPLE>
<PERSON PERSONID="E01">
<NAME>Tony Blair</NAME>
<ADDRESS>10 Downing Street ,London UK</ADDRESS>
<TEL>(061)98765</TEL>
<FAX>(061)98765</FAX>
<EMAIL>[email protected]</EMAIL>
</PERSON>
<PERSON PERSONID="E02">
<NAME>Bill Clinton</NAME>
<ADDRESS>White House,USA</ADDRESS>
<TEL>(001)6400 98765</TEL>
<FAX>(001)6400 98765</FAX>
<EMAIL>[email protected]</EMAIL>
</PERSON>
<PERSON PERSONID="E03">
<NAME>Tom Cruise</NAME>
<ADDRESS> 57 Jumbo Street,New York,USA</ADDRESS>
<TEL>(001) 4500 67859</TEL>
<FAX>(001) 4500 67859</FAX>
<EMAIL>[email protected]</EMAIL>
</PERSON>
<PERSON PERSONID="E04">
<NAME>Linda Goodman</NAME>
<ADDRESS>78 Crax Lane,London,UK</ADDRESS>
<TEL>(061) 54 56789</TEL>
<FAX>(061) 54 56789</FAX>
<EMAIL>[email protected]</EMAIL>
</PERSON>
</PEOPLE>
好辛苦呀!!顶~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~