以下介紹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);//打印插入語句
}
}