如题,注意:并不一定只有一层循环,不知道节点下面有没有子节点,也不知道子节点下面还有没有子节点...? 谢谢,重金有赏!

解决方案 »

  1.   


    // 用递归方法遍历DOM树
    public void GetElement(NodeList nodelist) {
    Node cnode;
    int i;
    String str;
    int len; if (nodelist.getLength() == 0) {
    return;
    }
    for (i = 0; i < nodelist.getLength(); i++) {
    cnode = nodelist.item(i);
    if (cnode.getNodeType() == 1) {
    if(cnode.hasChildNodes()){
    NodeList childlist = cnode.getChildNodes();
    if(childlist.item(i).getNodeType()==Node.ENTITY_NODE){
    String stringLetter=cnode.getNodeName().substring(0, 1).toUpperCase();    
    String setName="set"+ stringLetter + cnode.getNodeName().substring(1);
    //             Method setMethod=fs.getMethod(setName, cnode.getNodeType());    
    }
    }
    GetElement(cnode.getChildNodes());
    } else if (cnode.getNodeType() == 3) {
    str = cnode.getNodeValue();
    len = str.length();
    if (len > 1){
    String fieldName = cnode.getParentNode().getNodeName();
    String stringLetter=fieldName.substring(0, 1).toUpperCase();    
    String setName="set"+stringLetter+fieldName.substring(1);    
    Field[] fields1=head.getDeclaredFields();    
    Field[] fields2=msg.getDeclaredFields();
    for (int j = 0; j < fields1.length; j++) {
    if(fields1[j].getName()==fieldName){
    try {
    Method setMethod = head.getMethod(setName, fields1[j].getType().getClass());
    setMethod.invoke(head, str);
    } catch (SecurityException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } catch (IllegalArgumentException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } catch (NoSuchMethodException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } catch (IllegalAccessException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } catch (InvocationTargetException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }
    }

    for (int j = 0; j < fields2.length; j++) {
    if(fields2[j].getName()==fieldName){
    try {
    Method setMethod = msg.getMethod(setName, fields2[j].getType().getClass());
    setMethod.invoke(msg, str);
    } catch (SecurityException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } catch (IllegalArgumentException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } catch (NoSuchMethodException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } catch (IllegalAccessException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } catch (InvocationTargetException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }
    }
    }
    }
    }
    } // 遍历所提供的DOM文档.
    public void ParseDom(Document document) {
    NodeList nodelist; Element element = document.getDocumentElement();
    // System.out.println("----" + element.getNodeName()); nodelist = element.getChildNodes();
    GetElement(nodelist);
    }
      

  2.   

    public void traver(Node node){
       if(node instanceof TagNode){
          System.out.println(((TagNode)node).getText()); 
       }   Node child=node.getFirstChild();
       while(child!=null){
           traver(child);
           child=child.getSibling(); 
       }
     }