百度一下DOM4J解析XML例子,一搜一大堆。
id这些在里边都是attribute对象,取到对象以后直接获取值就行了。
对象都可以根据名字直接就能取到很方便的。
记住是dom4j

解决方案 »

  1.   

    先取出iswitch的nodelist 再遍历比较哪一个节点的属性是你想要的 通过这个节点找到子节点
      

  2.   

    Dom4J官方地址:http://www.dom4j.org/dom4j-1.6.1/
     
    顺便说一句你的XML文件需要加一个根节点,这样才是对的。参考这个代码:/**
         * <p>Description: 解析DOM文档</p>
         * @return ExtJS JSON菜单格式内容
         */
        protected List parseDocument() {
            InputStream is = this.getClass().getClassLoader().getResourceAsStream("content.xml");
            SAXReader reader = new SAXReader();
            Document document = null;
            try {
                document = reader.read(is);
            } catch (DocumentException e) {
                e.printStackTrace();
            }
            if(document == null){
                return null;
            }
            Element root = document.getRootElement();
            List<Element> list = root.elements();
            List result = new ArrayList();
            for (Element element : list) {
                Map value = parseElement(element);
                if(value != null) {
                    result.add(value);
                }
            }
            return result;
        }
        
        /**
         * <p>Description: 菜单节点解析</p>
         * @param element 菜单节点
         * @return ExtJS JSON菜单格式内容
         */
        protected Map parseElement(Element element) {
            Attribute authority = element.attribute("authority");
            if(authority == null || !authenticate(authority.getText())) {
                return null;
            }
            Map map = new HashMap();
            map.put("text", element.attribute("name").getText());
            Attribute attribute = element.attribute("leaf");
            if(attribute != null) {
                map.put("leaf",    Boolean.parseBoolean(attribute.getText()));
                map.put("iconCls", element.attribute("iconCls").getText());
                map.put("forward", element.attribute("forward").getText());
            } else {
                List<Element> list = element.elements();
                List children = new ArrayList();
                for (Element child : list) {
                    Map value = parseElement(child);
                    if(value != null) {
                        children.add(value);
                    }
                }
                map.put("expanded", Boolean.parseBoolean(element.attribute("expanded").getText()));
                map.put("children", children);
            }
            return map;
        }