如下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>
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>
用selectSinglenode是可以的
./level2/level3
List list = doc.selectNodes("/leveltop/mytag/level/level2/level3");感觉好像是可以的吧,
List list = doc.selectNodes("//level3");
楼上的写法会把<level3 id="456">也同时找出来
即我要第一次得到<level><level2><level3 id="123">
第二次得到<level><level2><level3 id="456">
不是一次性得到这两个节点
Iterator it = nodes.iterator();
while( it.hasNext()){
Node n = (Node)it.next();
System.out.println(n.valueOf("@id"));
}这样不行吗?