谁帮忙就看看这段代码:
  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>

解决方案 »

  1.   

    没看明白你的需求
    给你我写的根据你的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();
    }
    }}
      

  2.   

    首先获得根节点DataTable 为root然后遍历其所有子节点for(Iterator rootIter = root.elementIterator("Table"); rootIter.hasNext();)
    每个节点为Table节点 输出其属性name值接着遍历每个Table节点的子节点for(Iterator tableIter = tableNode.elementIterator(); tableIter.hasNext();)
    每个节点为row 输出其属性id你可以继续类似遍历每个row节点的子节点id
      

  3.   

    确实得到的是它的子节点,不包括孙子节点
    二楼是正解,不过我们一般用的是增强for循环,
    这样代码比较简洁一些