if(child.getNodeType() == Node.ELEMENT_NODE)

解决方案 »

  1.   

    上面得代码只能访问到第二层
    UpdateEdition
    TerminalAlert
    ConfigAdsl  但是UpdateEdition 中还有很多内容那? 怎么读啊? if(child.getNodeType() == Node.ELEMENT_NODE) 这句话怎么了?第3层得节点也是元素节点啊?
      

  2.   

    JDOM的,供参考.
    /**
     * gui.xml文件操作类<br>
     * 只对应gui.xml文件
     * @author sl
     *
     */
    public class GUI_XMLReader {
    static{
    rootElement = loadRootElement();
    }
    private static final Element rootElement;//根结点

    /**
     * xml文件名
     */
    public static final String xmlFile = "gui.xml";

    /**
     * 得到XML文件名及路径
     * @return
     */
    public static String getXMLFilePath(){  
    return Util.getMyUrl(DataBuilder.class) + xmlFile;
    }

    /**
     * 得到根结点的子结点<br>
     * 注:如果子结点不存在则返回null
     * @param name 子结点名
     * @return 子结点
     */
    public static Element getRootChildElement(String name){
    return getElement(rootElement, name);
    }

    /**
     * 得到指定结点的子结点
     * 注:如果子结点不存在则返回null
     * @param element 源结点
     * @param name 子结点名 
     * @return 子结点
     */
    public static Element getElement(Element element, String name){
    return element.getChild(name);
    }

    /**
     * 得到此结点的下级子结点列表
     * 注: 若无子结点则返回null
     * @param nodeName 子结点名
     * @return 子结点列表
     */
    public static List getChildElementList(String nodeName){
    Element toolbar = rootElement.getChild(nodeName);
    return toolbar.getChildren();
    }

    /**
     * 加载root结点
     * @return
     */
    private static Element loadRootElement(){
    SAXBuilder sax = new SAXBuilder();
    Document doc = null;
    try{
    doc = sax.build(getXMLFilePath());
    }catch(Exception e){
    e.printStackTrace();
    throw new RuntimeException(e);
    }
    return doc.getRootElement();
    }
    }gui.xml:
    <?xml version="1.0" encoding="GBK"?>
    <root>
    <toolbar>
    <button name="系统设置" id="systemSetup">
    <enevt 
    className="com.actl.msp.sysmanager.gui.enevt.RegButtonEnevt" 
    methodName="systemSetupEnevt">
    </enevt>
    </button>
    <button name="软件注册" id="softReg">
    <enevt 
    className="com.actl.msp.sysmanager.gui.enevt.RegButtonEnevt"  
    methodName="softRegEnevt">
    </enevt>
    </button>
    <button name="关于" id="about">
    <enevt 
    className="com.actl.msp.sysmanager.gui.enevt.RegButtonEnevt" 
    methodName="aboutEnevt">
    </enevt>
    </button>
    <button name="帮助" id="help">
    <enevt 
    className="com.actl.msp.sysmanager.gui.enevt.RegButtonEnevt" 
    methodName="helpEnevt">
    </enevt>
    </button>
    </toolbar>

    <tree>
    <node name="磁带库" id="tapeStor">
    <toolbar>
    <button name="新建">
    <enevt className="" methodName="">
    </enevt>
    </button>
    <button name="删除">
    <enevt className="" methodName="">
    </enevt>
    </button>
    <button name="修改">
    <enevt className="" methodName="">
    </enevt>
    </button>
    </toolbar>
    <execute 
    className="com.actl.msp.sysmanager.gui.enevt.RegTreeEnevt" 
    methodName="tapeStorEnevt">
    <parameter class=""/>
    </execute>
    </node>
    <node name="用户组" id="userGroup">
    <execute 
    className="com.actl.msp.sysmanager.gui.enevt.RegTreeEnevt" 
    methodName="userGroupEnevt">
    <parameter class=""/>
    </execute>
    </node>

    <node name="存储位置" id="memLocal">
    <execute 
    className="com.actl.msp.sysmanager.gui.enevt.RegTreeEnevt" 
    methodName="memLocalEnevt">
    <parameter class=""/>
    </execute>
    </node>
    <node name="缓存位置" id="cacheLocal">
    <execute 
    className="com.actl.msp.sysmanager.gui.enevt.RegTreeEnevt" 
    methodName="cacheLocalEnevt">
    <parameter class=""/>
    </execute>
    </node>

    <node name="迁移器" id="moveAdp">
    <execute 
    className="com.actl.msp.sysmanager.gui.enevt.RegTreeEnevt" 
    methodName="moveAdpEnevt">
    <parameter class=""/>
    </execute>
    </node>
    <node name="收集分布" id="collDrst">
    <execute 
    className="com.actl.msp.sysmanager.gui.enevt.RegTreeEnevt" 
    methodName="collDrstEnevt">
    <parameter class=""/>
    </execute></node>

    <node name="磁带冗余" id="tapeRedund">
    <execute 
    className="com.actl.msp.sysmanager.gui.enevt.RegTreeEnevt" 
    methodName="tapeRedundEnevt">
    <parameter class=""/>
    </execute>
    </node>
    <node name="任务" id="task">
    <execute 
    className="com.actl.msp.sysmanager.gui.enevt.RegTreeEnevt" 
    methodName="taskEnevt">
    <parameter class=""/>
    </execute>
    </node>
    </tree>
    </root>
      

  3.   

    请问SAXBuilder 这个类是jdk带的么? 我没找到它啊? 是不是第三方的?
      

  4.   

    是jdom里的类
    org.jdom.output.SAXBuilder
      

  5.   

    我在java文档中没找到这个类? 我用的是j2sdk1.4.2_09 是不是5.0才有这个类?
      

  6.   

    是JAVA自带的类吧,引用一下试试
      

  7.   

    去http://www.jdom.org/下jdom,是jdom才有的类
      

  8.   

    问题解决了, jdom非常好用. 比java自带得方便多了:)