当前位置: 代码迷 >> Java Web开发 >> 怎么遍历NodeList
  详细解决方案

怎么遍历NodeList

热度:10541   发布时间:2013-02-25 21:17:12.0
如何遍历NodeList?
如题,注意:并不一定只有一层循环,不知道节点下面有没有子节点,也不知道子节点下面还有没有子节点...? 谢谢,重金有赏!

------解决方案--------------------------------------------------------
Java code
    // 用递归方法遍历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);    }