如下XML文件,我希望用dom4j实现,先得到<level>列表,如下
List list = doc.selectNodes("/leveltop/mytag/level");
for (Iterator iter = list.iterator(); iter.hasNext();)
{
Element interaction=(Element)iter.next();
}
然后我希望能不能在遍历<level>的时候,一次性的指向 level1/level2/level3,得到level3的id的值
也就是每遍历iter一次,得到一个level3的id值,我可以一层一层的读,但是麻烦,如果嵌套很深,就不方便了
也许selectSinglenode可以,但是试了几次都没成功,不熟悉诶<leveltop>
  <mytag>
    <level>
       <level2>
         <level3 id="123">
         <level3>
       </level2>
    </level>
    <level>
       <level2>
         <level3 id="456">
         <level3>
       </level2>  
    </level>
  <mytag>
  <yourtag>
    <tag1>
    </tag1>
  </yourtag>
</leveltop>

解决方案 »

  1.   

    你看一下DOM4J的API,看看他的XPath语句怎样写
    用selectSinglenode是可以的
    ./level2/level3
      

  2.   

    selectNodes不行吗?
    List list = doc.selectNodes("/leveltop/mytag/level/level2/level3");感觉好像是可以的吧,
      

  3.   

    要不就这样啊
    List list = doc.selectNodes("//level3");
      

  4.   

    http://www-128.ibm.com/developerworks/cn/xml/x-dom4j.htmlhttp://www.jalorsoft.com/holen/dom4j.html
      

  5.   

    我要的是当前节点下的<level3 id="123">
    楼上的写法会把<level3 id="456">也同时找出来
    即我要第一次得到<level><level2><level3 id="123">
    第二次得到<level><level2><level3 id="456">
    不是一次性得到这两个节点
      

  6.   

    List nodes = doc.selectNodes("/leveltop/mytag/level/level2/level3");
            Iterator it = nodes.iterator();
            while( it.hasNext()){
                Node n = (Node)it.next();
                System.out.println(n.valueOf("@id"));
            }这样不行吗?