protected void ite(Element e) {//开始时传入文档
List elements = e.elements();
Iterator it = elements.iterator();
if ("data".equals(e.attributeValue("type"))) {//判断是否节点的tpye属性值为data
insertRow(e, it);
} else {
//不是的话先存后递归 insertRow(e, it);
while (it.hasNext()) {
++thkey;
Element elem = (Element) it.next();
//递归遍历 
ite(elem);
}
}
--thkey;
++tkey;
int len = tString.length();
onString = tString.substring(0, len - tkey * 2 - 1);
forString = tString.substring(len - tkey * 2);
tString = onString + '2' + forString;
}
//后面的实现插入通过name属性自动生成tree字段值 用于生成tree (公司的tree必须要有这4个字段要不无法生成)
自动生成的3个字段和表中的字段值一样 比如detail是判断是否是叶子节点 Grade是节点层数 Code麻烦点 是需要一位Grade自动生成01  同层的第几个兄弟节点就把1变成几 比如010203就是第一个节点的第2个节点的第3个节点
protected void insertRow(Element e, Iterator it) {
if (null != e.attribute("name")) {
attr = e.attributeValue("name");
insertRow = table.insertRow();
insertRow.setCellValue("Name", attr);
if (it.hasNext()) {
detail = "0";
} else {
detail = "1";
}
insertRow.setCellValue("Detail", detail);
insertRow.setCellValue("Grade", String.valueOf(thkey));
insertRow.setCellValue("Code", tString);
}
}