pengjun626 2011-04-14 00:48
浏览 248
已采纳

JDOM读取XML文件问题

1.XML文件
<?xml version="1.0" encoding="UTF-8"?>


















2.JAVA类
package com.pj.manager.action;

import java.util.List;

import org.jdom.Document;
import org.jdom.Element;
import org.jdom.input.SAXBuilder;

public class MenuTreeAction {

  public static void main(String[] args) throws Exception{  
        SAXBuilder sb=new SAXBuilder(); 
        Document doc=sb.build("MenuXML/1104SiteMap.xml"); //构造文档对象
        Element root=doc.getRootElement(); //获取根元素
        List list=root.getChildren("DataItem");//取名字为DataItem的所有元素 
        for(int i=0;i<list.size();i++){ 
           Element element = (Element)list.get(i); 
           String DataItem = element.getAttributeValue("text");
           System.out.println("父结点:"+DataItem);  
           Element root2 = doc.getRootElement().getChild("DataItem");
           List itemlist = root2.getChildren("Item");
           String[] Item = new String[itemlist.size()];
           for(int j=0; j<itemlist.size(); j++) {
               Element itemelement = (Element)itemlist.get(j);                 
               Item[j] = itemelement.getAttributeValue("text");
               System.out.println("--子结点:"+Item[j]); 
           }  
           System.out.println("-----------------------------------"); 
        }   
      } 

}

3.输出结果
父结点:数据处理
--子结点:数据填报
--子结点:文件提交
--子结点:数据校验
--子结点:数据汇总

--子结点:Top(N)汇总

父结点:报送管理
--子结点:数据填报
--子结点:文件提交
--子结点:数据校验
--子结点:数据汇总

--子结点:Top(N)汇总

父结点:数据查询
--子结点:数据填报
--子结点:文件提交
--子结点:数据校验
--子结点:数据汇总

--子结点:Top(N)汇总

父结点:制度查询
--子结点:数据填报
--子结点:文件提交
--子结点:数据校验
--子结点:数据汇总

--子结点:Top(N)汇总

父结点:规则定制
--子结点:数据填报
--子结点:文件提交
--子结点:数据校验
--子结点:数据汇总

--子结点:Top(N)汇总

4.**********疑问所在***********
因为我在根结点root下面有多个相同的DataItem节点,我要取第二个DataItem下的所有Item节点应该如何去取???
上面程序所有DataItem节点下的子结点都为第一个DataItem下的子节点。

  • 写回答

1条回答 默认 最新

  • ethenjean 2011-04-14 15:04
    关注

    [quote]public class MenuTreeAction {

    public static void main(String[] args) throws Exception{

    SAXBuilder sb=new SAXBuilder();
    Document doc=sb.build("MenuXML/1104SiteMap.xml"); //构造文档对象
    Element root=doc.getRootElement(); //获取根元素
    List list=root.getChildren("DataItem");//取名字为DataItem的所有元素
    for(int i=0;i<list.size();i++){
    Element element = (Element)list.get(i);
    String DataItem = element.getAttributeValue("text");
    System.out.println("父结点:"+DataItem);

    //Element root2 = doc.getRootElement().getChild("DataItem");
    Element root2=element;
    List itemlist = root2.getChildren("Item");
    String[] Item = new String[itemlist.size()];
    for(int j=0; j<itemlist.size(); j++) {
    Element itemelement = (Element)itemlist.get(j);

    Item[j] = itemelement.getAttributeValue("text");
    System.out.println("--子结点:"+Item[j]);
    }

    System.out.println("-----------------------------------");
    }

    }

    } [/quote]

    试试看

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码