将XML内容写到对应DB的多个表中

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();
		}

	}

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值