java解析xml文件

1 篇文章 0 订阅
1 篇文章 0 订阅

最近在做一个项目,其中要用到xml文件,网上各种例子都有,我做了一个实现吧。相信根据注释,自己写一下很快就能上手学会。
话不多说,直接上代码:
point.xml

</district>
<district id="2" >
<group id="1" tag="1.1.9.1.0.59" desc="上库水位" unit="m"> </group>      
<group  id="2" tag="1.1.10.1.0.59" desc="下库水位" unit="m"> </group> 
</district>
    <district id="3"  >
     <group  机组="1"  tag="1.1.2.1.55.59" desc="1号机组功率" unit="MW"  ></group>
      <group 机组="1"  tag="1.1.2.1.22.59" desc="电压" unit="KV" ></group>
      <group 机组="1"  tag="1.1.2.1.58.59" desc="频率" unit="HZ"></group>

     <group    机组="2" id="1" tag="1.1.3.1.36.59" desc="2号机组功率" unit="MW" ></group>
      <group   机组="2" id="2" tag="1.1.3.1.3.59" desc="电压" unit="KV" ></group>
      <group   机组="2" id="3" tag="1.1.3.1.39.59" desc="频率" unit="HZ" ></group>
      
     <group id="1"  机组="3" tag="1.1.4.1.63.59" desc="3号机组功率" unit="MW"></group>
      <group id="2" 机组="3" tag="1.1.4.1.6.59" desc="电压" unit="KV"></group>
      <group id="3" 机组="3" tag="1.1.4.1.66.59" desc="频率" unit="HZ"></group>
     
     <group id="1" 机组="4" tag="1.1.5.1.36.59" desc="4号机组功率" unit="MW"></group>
      <group id="2" 机组="4" tag="1.1.5.1.3.59" desc="电压" unit="KV"></group>
      <group id="3" 机组="4" tag="1.1.5.1.39.59" desc="频率" unit="HZ"></group>
</district>
</block>

 public void initXml(){
    try {
    		FileInputStream xmlInputStream = new FileInputStream("point2.xml");
    
            DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); // 返回documentBuilderFactory对象
            DocumentBuilder db = dbf.newDocumentBuilder();// 返回db对象用documentBuilderFatory对象获得返回documentBuildr对象
            Document dt = db.parse(xmlInputStream); // 得到一个DOM并返回给document对象
            NodeList n1 = dt.getElementsByTagName("district");//获得district节点集合
            
            System.out.println("一共有"+n1.getLength()+"个district节点");
            if (n1!= null) {
            	      //遍历每一个district节点
                  for (int i = 0; i < n1.getLength(); i++) {
           
                	  Element element=(Element)n1.item(i);
                	String districtid=element.getAttribute("id"); //获得district节点的id属性
                	if(districtid.equals("1")) {
                		NodeList group = element.getElementsByTagName("group");//获得id=1的district节点的group子节点并遍历
                		for(int j=0;j<group.getLength();j++) {
                			Element element2=(Element)group.item(j);
                			String desc=element2.getAttribute("desc");
                			String tag=element2.getAttribute("tag");
                			String unit=element2.getAttribute("unit");
                			System.out.println("desc="+desc+"tag="+tag+"unit="+unit);
                		}
                	} 
                    	if(districtid.equals("2")) {
                    		NodeList group2 = element.getElementsByTagName("group");
                    		for(int j=0;j<group2.getLength();j++) {
                    			Element element2=(Element)group2.item(j);
                    			String desc=element2.getAttribute("desc");
                    			String tag=element2.getAttribute("tag");
                    			String unit=element2.getAttribute("unit");
                    		System.out.println("desc="+desc+"tag="+tag+"unit="+unit);
                    		}	
                	}
                	    
                    	if(districtid.equals("3")) {
                    		NodeList group2 = element.getElementsByTagName("group");
                    		for(int j=0;j<group2.getLength();j++) {
                    			Element element2=(Element)group2.item(j);
                    			String desc=element2.getAttribute("desc");
                    			String tag=element2.getAttribute("tag");
                    			String unit=element2.getAttribute("unit");
                    			String jizu=element2.getAttribute("机组");
                    		System.out.println("desc="+desc+"tag="+tag+"unit="+unit);
                    		
                    		}	
                	}
                	   }
                  }
    		}
    		catch(Exception e) 
    		{e.printStackTrace();}
    		}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值