500分:急求如何通过jsp或servlet读取data.xml生成几条相应的插入(insert)的sql语句,具体如下:

zhangsq 2003-08-22 09:00:09
data.xml文件如下:其中user和group和dept为表名,其余为该表的字段
<?xml version="1.0" encoding="GB2312"?>
<matter>
<user>
<userid>001</userid>
<username>zhangxj</username>
<password>123456</password>
<email>zsq666@263.net</email>
<userstatus>1</userstatus>
  <groupid>1</groupid>
  <deptid>1</deptid>
</user>
<group>
<groupid>1</groupid>
<groupname>项目一组</groupname>
<grouper>王岗</grouper>
<groupdesc>网络软件开发</groupdesc>
</group>
<group>
<groupid>2</groupid>
<groupname>项目二组</groupname>
<grouper>刘武</grouper>
<groupdesc>医疗软件的开发</groupdesc>
</group>
<group>
<groupid>2</groupid>
<groupname>项目三组</groupname>
<grouper>李奋</grouper>
<groupdesc>软件的测试维护</groupdesc>
</group>
<dept>
<deptid>1</deptid>
<deptname>软件部</deptname>
<depter>张则</depter>
<number>20</number>
<desc>it事业部</desc>
</dept>
</matter>
上面的xml是三个表(user,group,dept)的数据,我想通过java程序解析此xml文件,然后相成相应的4条
insert into user(、、、、)values(、、、、);
insert into group(、、、、)values(、、、、);
insert into group(、、、、)values(、、、、);
insert into group(、、、、)values(、、、、);
insert into dept(、、、、)values(、、、、);
几条 sql语句。然后用这些生成的SQL语句把XML中的值插入到数据库中去??
一旦解决马上结帖,决不失言!500分

...全文
41 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
cust 2003-08-22
  • 打赏
  • 举报
回复
程序如下,其中没有考虑到字段的数据类型,都是按照字符串处理的,如果有其他如日期等数据类型,则应该在xml中添加字段类型属性。其中需要jdom包,可以在网上下载。或者直接在jbuilder中引入。我是在jbuilder7中调试通过的。
package test;
import org.jdom.*;
import org.jdom.input.*;
import java.io.*;
import java.util.*;
/**
* <p>Title: </p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2003</p>
* <p>Company: </p>
* @author unascribed
* @version 1.0
*/
/**
* 思路:对二级节点进行便利,然后把每一个元素作为
*
* */
public class Haha {

public Haha() {
}
public static void main(String args[]){
try {
SAXBuilder saxb = new SAXBuilder();
//从文件构造一个Document,因为XML文件中已经指定了编码,所以这里不必了
Document doc = saxb.build(new FileInputStream("data.xml"));
Element root = doc.getRootElement(); //得到根元素
//得到子元素的个数,也就是要处理count条sql语句
int layer1Count = root.getChildren().size();

List elements = root.getChildren(); //得到根元素所有子元素的集合
Element firstElement;
StringBuffer sb = new StringBuffer(); //用来保存sql语句的前半部分
for (int i = 0; i < layer1Count; i++) {
firstElement =(Element)elements.get(i);
// System.out.println(firstElement.getName()) ;//打印出表的名字
int layer2Count = firstElement.getChildren().size();
StringBuffer value = new StringBuffer();
Element secondElement;
sb.append("insert into "+ firstElement.getName() + "(");
value.append("values(");
for (int j = 0; j < layer2Count; j++) {
secondElement = (Element)firstElement.getChildren().get(j);
sb.append(secondElement.getName()+",");
value.append("'"+secondElement.getText()+"',");
}
sb.deleteCharAt(sb.length()-1); //删除多余的","
value.deleteCharAt(value.length()-1); //删除多余的","
sb.append(")");
value.append(")");
System.out.println(sb.toString()+value.toString());
sb.delete(0,sb.length());
value.delete(0,value.length());
}
}
catch (Exception ex) {
ex.printStackTrace();
}

}
}
myfirebird7 2003-08-22
  • 打赏
  • 举报
回复
尝试一下jbuilder的xml数据绑定!
zhangsq 2003-08-22
  • 打赏
  • 举报
回复
急等

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧