以下介绍Dom4j的环境是:windowsXP、eclipse3.5.0、jdk1.6、Dom4j1.6.1.jar
Dom4j1.6.1.jar架包可以在本人的资源中下载,欢迎下载使用
需求:通过xml的最底层标签名称创建表,并将xml标签中的内容写入到数据库中
现在主要是:获取创建表的语句和插入数据的语句
public static void analyticalXML(String xmlpath){
SAXReader readerxml=new SAXReader();
Document doc=null;
try {//读取一个形式良好的xml文件形成一个document对象
doc=readerxml.read(new File(xmlpath));//"C:/doc.xml"
Element root=doc.getRootElement();//获取该对象的根节点
getchildElement(doc,root);
} catch (DocumentException e) {
e.printStackTrace();
}
}
//递归获取子节点
public static void getchildElement(Document doc,Element elementa){
String createsql = "create table student(";
String insertsql = "insert into student(";
String valuessql = "values(";
//所有最底层的标签(建表字段)都在一个标签下面
for(Iterator it=elementa.elementIterator();it.hasNext();){
Element child=(Element) it.next();//获取子节点
List attributes = new ArrayList();
attributes = child.attributes();
Iterator itchild = child.elementIterator();
if(!itchild.hasNext()&&attributes.size()<1){//是需要的最底层节点
createsql += child.getName() + " varchar(10) ,";
insertsql += child.getName() + ",";
if(child.getText().length()>0){
valuessql += child.getText() + ",";
}else{
valuessql += "''" + ",";
}
}else {
getchildElement(doc,child);//不是最底层节点,则递归获取下一层子节点
}
}
createsql = createsql.substring(0,createsql.length()-1) + ")";
insertsql = insertsql.substring(0,insertsql.length()-1) + ")";
valuessql = valuessql.substring(0,valuessql.length()-1) + ")";
if(createsql.length()>50){//如果建表语句createsql是完整的,那么其长度肯定大于50
System.out.println();
System.out.println(createsql);//打印建表语句
System.out.println(insertsql + valuessql);//打印插入语句
}
}