谁帮忙就看看这段代码:
for(Iterator it=nodes.iterator();it.hasNext();){
Element element = (Element) it.next();
// 得到table节点的Name属性值,用来判断属于哪一个数据库表
String tableName=element.attribute("Name").getText();
//打印数据库表名
System.out.print("数据库表名"+tableName);//这里可以遍历出来
//取得row节点下的所有子节点,并且遍历
for(Iterator rowit=element.elementIterator();rowit.hasNext();){ //这里就不行了
Element rowelement = (Element) rowit.next();
System.out.print(rowelement.getName());
}xml结构:
<DataTable>
<Table>
<row>
<id></id>
...................
</row>
</Table>
</DataTable>
for(Iterator it=nodes.iterator();it.hasNext();){
Element element = (Element) it.next();
// 得到table节点的Name属性值,用来判断属于哪一个数据库表
String tableName=element.attribute("Name").getText();
//打印数据库表名
System.out.print("数据库表名"+tableName);//这里可以遍历出来
//取得row节点下的所有子节点,并且遍历
for(Iterator rowit=element.elementIterator();rowit.hasNext();){ //这里就不行了
Element rowelement = (Element) rowit.next();
System.out.print(rowelement.getName());
}xml结构:
<DataTable>
<Table>
<row>
<id></id>
...................
</row>
</Table>
</DataTable>
给你我写的根据你的xml文件
table.xml
<?xml version="1.0" encoding="UTF-8"?>
<DataTable>
<Table name="user">
<row id="r1">
<id name="1"></id>
</row>
<row id="r2">
<id name="2"></id>
</row>
</Table>
</DataTable>Java
package com.dom4j.test;import java.io.File;
import java.util.Iterator;import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;public class Test { public static void main(String[] args) {
// TODO Auto-generated method stub
SAXReader saxReader = new SAXReader();
Document document = null;
try {
document = saxReader.read(new File("src/table.xml"));
Element root = document.getRootElement();
for(Iterator rootIter = root.elementIterator("Table"); rootIter.hasNext();){
Element tableNode = (Element) rootIter.next();
System.out.println(tableNode.attributeValue("name"));
for(Iterator tableIter = tableNode.elementIterator(); tableIter.hasNext();){
Element row = (Element) tableIter.next();
System.out.println(row.attributeValue("id"));
}
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}}
每个节点为Table节点 输出其属性name值接着遍历每个Table节点的子节点for(Iterator tableIter = tableNode.elementIterator(); tableIter.hasNext();)
每个节点为row 输出其属性id你可以继续类似遍历每个row节点的子节点id
二楼是正解,不过我们一般用的是增强for循环,
这样代码比较简洁一些