<?xml   version="1.0"   encoding="GB2312"?>   
  <root>   
        <role>   
            <roleName>设备科</roleName>   
            <roleMenus>   
                    <menu>计划</menu>   
                    <menu>总结</menu>   
            </roleMenus>   
      </role>   
        <role>   
            <roleName>后勤科</roleName>   
            <roleMenus>   
                    <menu>进展</menu>   
            </roleMenus>   
      </role>   
  </root>   
如何用循环,把他们中的值取出来,那个高手帮帮我,

解决方案 »

  1.   

    使用xpath,解析xml,很方便的。
      

  2.   

    public static ArrayList ParseXML(String arg) {
    int j = 0;
    ArrayList al = new ArrayList();
    SAXReader reader = new SAXReader();
    Document doc = null;// 声明文档对象

    try {
    doc = reader.read(new File("d:/XXX.xml"));// 读取XML文档
    } catch (DocumentException e) {
    e.printStackTrace();
    } Element info = doc.getRootElement();// 声明跟元素 // 循环遍历根元素里面的所有元素
    for (Iterator i = info.elementIterator(arg); i.hasNext();) {
    Element el = (Element) i.next();
     if(arg.equalsIgnoreCase("role")){
    al.add(el.elementTextTrim("roleName"));
    al.add(el.elementTextTrim("roleMenus"));
    }
    }

    return al; }
      

  3.   

    StringBuffer sb = "你的字符串";
            Document document = null;
            try {
                document = org.dom4j.DocumentHelper.parseText(sb.toString());
            } catch (DocumentException ex) {}
            Element root = document.getRootElement();
            for(java.util.Iterator i = root.elementIterator("role"); i.hasNext();){
                Element s = (Element)i.next();
                Element roleName = (Element)s.elementIterator("roleName").next();            Element roleMenus = (Element)s.elementIterator("roleMenus").next();            
            }
      

  4.   

    没写完呢,呵呵 点错按钮了StringBuffer sb = "你的字符串";
            Document document = null;
            try {
                document = org.dom4j.DocumentHelper.parseText(sb.toString());
            } catch (DocumentException ex) {}
            Element root = document.getRootElement();
            for(java.util.Iterator i = root.elementIterator("role"); i.hasNext();){
                Element s = (Element)i.next();
                Element roleName = (Element)s.elementIterator("roleName").next();
                System.out.println("roleName:" + roleName.getData());
                for(java.util.Iterator j = root.elementIterator("roleMenus"); j.hasNext();){
                 Element s2 = (Element)j.next();
                 Element menu = (Element)s2.elementIterator("menu").next();
                 System.out.println("menu:" + menu.getData());
                
            }