data.xml
<?xml version="1.0" encoding="UTF-8"?> <dbData> <t_information number="0"> <id>'1'</id> <content>'ed'</content> <createDate>' '</createDate> <source>'ff'</source> <title>'fff'</title> <url>' '</url> <equipment_id>null</equipment_id> <type_id>null</type_id> </t_information> <t_information number="1"> <id>'2'</id> <content>'cc'</content> <createDate>' '</createDate> <source>'cc'</source> <title>' '</title> <url>' '</url> <equipment_id>null</equipment_id> <type_id>null</type_id> </t_information> <t_user number="0"> <id>'1'</id> <birthday>' '</birthday> <enabled>'1'</enabled> <gender>' '</gender> <password>'33'</password> <realName>'dd'</realName> <school>'dd'</school> <specialty>' '</specialty> <username>' '</username> </t_user> <t_user number="1"> <id>'2'</id> <birthday>' '</birthday> <enabled>'1'</enabled> <gender>' '</gender> <password>'dfgd'</password> <realName>'dg'</realName> <school>'dfg'</school> <specialty>'dfd'</specialty> <username>'dfg'</username> </t_user> <t_user number="2"> <id>'3'</id> <birthday>' '</birthday> <enabled>'0'</enabled> <gender>' '</gender> <password>'45'</password> <realName>'reet'</realName> <school>'ert'</school> <specialty>'ert'</specialty> <username>'ert'</username> </t_user> <t_user number="3"> <id>'5'</id> <birthday>'1900-01-01 00:00:00.0'</birthday> <enabled>'0'</enabled> <gender>''</gender> <password>'452'</password> <realName>'reets'</realName> <school>'erts'</school> <specialty>'erts'</specialty> <username>'erts'</username> </t_user> <t_user number="4"> <id>'6'</id> <birthday>'1900-01-01 00:00:00.0'</birthday> <enabled>'2'</enabled> <gender>'2'</gender> <password>'4542'</password> <realName>'re2ets'</realName> <school>'er2ts'</school> <specialty>'e2rts'</specialty> <username>'ert2s'</username> </t_user> <t_user number="5"> <id>'7'</id> <birthday>'1900-01-01 00:00:00.0'</birthday> <enabled>'42'</enabled> <gender>'22'</gender> <password>'4542'</password> <realName>'re22ets'</realName> <school>'er2t2s'</school> <specialty>'e2r3ts'</specialty> <username>'ert22s'</username> </t_user> </dbData>
import java.io.FileInputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.input.SAXBuilder;
public class XMLToDB {
@SuppressWarnings("unchecked")
public void ParseXMl() throws Exception {
SAXBuilder sb = new SAXBuilder();// 建立构造器
Document doc = sb.build(new FileInputStream("c:/data.xml"));// 读入指定文件
Element root = doc.getRootElement();// 获得根节点
List list = root.getChildren();// 将根节点下的所有子节点放入List中
//删除原表中的内容
for(int i=0;i<list.size();i++){
Element item=(Element)list.get(i);
String tableName=item.getName();
String sql= "delete from "+tableName;
String tn="";
if(!tableName.equals(tn))executeTable(sql);
tn=tableName;
}
for (int i = 0; i < list.size(); i++) {
Element item = (Element) list.get(i);// 获取节点实例
String tableName = item.getName();// 获得元素节点的值为表名
//System.out.println("-----------" + tableName);
// 获得所有的content一个[[Text:], [Element: <title/>], [Text:], [Element:
// <content/>], [Text: ],
// [Element: <email/>], [Text:]]
List llist = item.getContent();
Iterator it = llist.iterator();
// 获取表中每一个字段的值,如title,content,email,放到columnList
List columnList = new ArrayList();
while (it.hasNext()) {
Object object = it.next();
if (!object.toString().substring(1, 2).equals("T"))
columnList.add(object.toString().substring(
object.toString().indexOf("<") + 1,object.toString().indexOf("/")));
else {
continue;
}
}
Map columndata = new HashMap();// 存储表字段与对应的值
Iterator column = columnList.iterator();
while (column.hasNext()) {
// System.out.println(column.next());
String columnname = column.next().toString();
String value = item.getChild(columnname).getText();// 取得属性值
columndata.put(columnname, value);
//System.out.println(columnname + "-->" + value);
}
String aa = "", bb = "";
int m = 0;
//遍历map中的key,value组成表中的一行
Set<Map.Entry> set = columndata.entrySet();
for (Map.Entry me : set) {
if("id".equals(me.getKey()))continue;
else{
String key = (String) me.getKey();
String value = (String) me.getValue();
if (m != 0) {
aa = aa + "," + key;
bb = bb + "," + value;
} else{
aa = key;
bb = value;
}
m++;
}
}//for
String sql = "insert into " + tableName + "(" + aa + ") values ("+ bb + ")";
//System.out.println(sql);
executeTable(sql);
}//向表中插入一行
}
public static void executeTable(String sql)throws Exception{
Statement stat=XMLToDB.getConn().createStatement();
stat.execute(sql);
}
public static Connection getConn()throws Exception{
Class.forName("net.sourceforge.jtds.jdbc.Driver");
String connStr="jdbc:jtds:sqlserver://localhost:1433/webNews";
Connection conn=DriverManager.getConnection(connStr,"sa","");
return conn;
}
public static void main(String[] args) {
try {
XMLToDB xmlToDB = new XMLToDB();
xmlToDB.ParseXMl();
} catch (Exception e) {
e.printStackTrace();
}
}
}