<test>
<name id="AA_123">
</name>
<name id="AA_456">
</name>
<name id="BB_123">
</name>
</test>List list = doc.selectNodes("/test/name");
我希望这个list找到name节点的所有id为AA_开头的节点

解决方案 »

  1.   

    只有一个一个判断了吧
    难道它还支持regex
      

  2.   

    for (Iterator iter = list.iterator();iter.hasNext();){
          Element element = (Element)iter.next();
          String attribute = element.getAttribute("id"); 
          if (attribute.substring(0,3).equals("AA_")){
            iter.remove();
          }
        }
      

  3.   

    List nodes = d.selectNodes("//test//name");
            Iterator it = nodes.iterator();
            while(it.hasNext()){
                Node n = (Node)it.next();
                String v = n.valueOf("@id");
                if(v.startsWith("AA_")){
                    System.out.println(v);
                }
                else
                    it.remove();
            }
            System.out.println(nodes.size());
      

  4.   

    我可以这样
    List list = doc.selectNodes("/test/name[@db='AA']");
    来实现只提取属性db的值为AA
    却不知道怎么提取以AA开头的
    看来只能采用上面的方法了
    查阅了DOM4J关于XPATH的文档,好像没有
      

  5.   

    遍历
    判断
    找到AA开头的以后放入Vector逻辑很简单,实现也不麻烦
    如果有更好的方法,学习
      

  6.   

    xml的遍历有很多
    我都是这么用的
      

  7.   

    List nodes = d.selectNodes("//test//name");
            Iterator it = nodes.iterator();
            while(it.hasNext()){
                Node n = (Node)it.next();
                String v = n.valueOf("@id");
                if(v.startsWith("AA_")){
                    System.out.println(v);
                }
                else
                    it.remove();
            }
            System.out.println(nodes.size());
    这个应该是正解