java 运用dom解析xml文件之一.

原创 2004年07月07日 16:23:00

xml文件如下:

<?xml version="1.0" encoding="gb2312"?>
<!DOCTYPE Catalog [
 <!ENTITY dt "&#13;">
 <!ENTITY at "&#10;">
]>
<CHINAEXCEL>
<F1>
<General>
<DesignMode>0</DesignMode>
<FixedRows>7</FixedRows>
<GridColor>16777215</GridColor>
<ShowHeader>0</ShowHeader>
<TotalCol>4</TotalCol>
<TotalRow>39</TotalRow>
<UseAdo>1</UseAdo>
<VerMajor>4</VerMajor>
<VerMinor>0</VerMinor>
</General>
<DefaultCell>
<hAg>0</hAg>
<swty>0</swty>
<vAg>6</vAg>
</DefaultCell>
<CellList>
<WriteByRow>1</WriteByRow>
<Row1>
<Cou>4</Cou>
<CL2>
<Cols>1</Cols>
<FtId>13</FtId>
<Row>1</Row>
<Rows>1</Rows>
<hAg>6</hAg>
<t>供电生产调度情况</t>
</CL2>
<CL3>
<Cols>-2</Cols>
<FtId>5</FtId>
<Row>1</Row>
<Rows>-1</Rows>
<hAg>6</hAg>
<t>供电生产调度情况</t>
</CL3>
<CL4>
<Row>1</Row>
</CL4>
</Row1>
<Row2>
<Cou>4</Cou>
<CL2>
<Cols>-2</Cols>
<Row>2</Row>
<Rows>-1</Rows>
<hAg>6</hAg>
</CL2>
<CL3>
<Cols>-2</Cols>
<Row>2</Row>
<Rows>-1</Rows>
<hAg>6</hAg>
</CL3>
<CL4>
<Row>2</Row>
</CL4>
</Row2>
<Row4>
<Cou>4</Cou>
<CL1>
<FtId>6</FtId>
<Row>4</Row>
</CL1>
<CL2>
<FtId>6</FtId>
<Row>4</Row>
<hAg>2</hAg>
<t>200501</t>
</CL2>
<CL3>
<FtId>6</FtId>
<Row>4</Row>
<hAg>0</hAg>
<t>月份</t>
</CL3>
<CL4>
<FtId>6</FtId>
<Row>4</Row>
<hAg>6</hAg>
<t>ADLJ201号</t>
</CL4>
</Row4>
<Row5>
<Cou>4</Cou>
<CL1>
<FtId>6</FtId>
<Row>5</Row>
<hAg>6</hAg>
<t>部门:</t>
</CL1>
<CL2>
<FtId>6</FtId>
<Row>5</Row>
<hAg>0</hAg>
<t>一级部门</t>
</CL2>
<CL3>
<FtId>6</FtId>
<Row>5</Row>
<hAg>6</hAg>
</CL3>
<CL4>
<FtId>6</FtId>
<Row>5</Row>
<hAg>6</hAg>
<t>月后4日前报出</t>
</CL4>
</Row5>
<Row6>
<Cou>4</Cou>
<CL1>
<BPenId>0</BPenId>
<Cols>1</Cols>
<FtId>6</FtId>
<LPenId>0</LPenId>
<RPenId>0</RPenId>
<Row>6</Row>
<TPenId>0</TPenId>
<fl>241</fl>
<hAg>6</hAg>
</CL1>
<CL2>
<Cols>-1</Cols>
<FtId>6</FtId>
<Row>6</Row>
<Rows>-6</Rows>
<hAg>6</hAg>
</CL2>
<CL3>
<BPenId>0</BPenId>
<FtId>6</FtId>
<LPenId>0</LPenId>
<RPenId>0</RPenId>
<Row>6</Row>
<TPenId>0</TPenId>
<fl>241</fl>
<hAg>6</hAg>
<t>计算单位</t>
</CL3>
<CL4>
<BPenId>0</BPenId>
<FtId>6</FtId>
<LPenId>0</LPenId>
<RPenId>0</RPenId>
<Row>6</Row>
<TPenId>0</TPenId>
<fl>241</fl>
<hAg>6</hAg>
<t>本月</t>
</CL4>
</Row6>
..........
</CHINAEXCEL>

 

解析java类..

import javax.xml.parsers.*;
import org.w3c.dom.*;
import com.report.*;

public class dom1{
 public static String GetValueString(String filename,String row,String col){
   Node node5=null;
  try{
  

   DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
   DocumentBuilder builder=factory.newDocumentBuilder();
   
   Document doc=builder.parse(filename);
   Element element =doc.getDocumentElement();
   String row1="Row"+row;
   String col1="CL"+col;
  
   NodeList nodelist=element.getChildNodes();
   NodeList nodelist1=null;
   NodeList nodelist2=null;
   NodeList nodelist3=null;
   NodeList nodelist4=null;
   NodeList nodelist5=null;
   Node node=null;
   Node node1=null;
   Node node2=null;
   Node node3=null;
   Node node4=null;
   

   if(nodelist.getLength()>0)
   {
     
    node=nodelist.item(1);//f1
    nodelist1=node.getChildNodes();
    if(nodelist1.getLength()>4){
    
     
     node1=nodelist1.item(5);//node1对应celllist
     if(!node1.getNodeName().equals("CellList"))
      node1=nodelist1.item(7);
     
     
     nodelist2=node1.getChildNodes();
     for(int m=3;m<nodelist2.getLength();){
      node2=nodelist2.item(m);//要循环 ,获取行
      m=m+2;
    
      if(node2.getNodeName().equals(row1))
      {
       nodelist3=node2.getChildNodes();
    
       for(int j=3;j<nodelist3.getLength();){//对应列循环取
        node3=nodelist3.item(j);//获取 列
        j=j+2;
        if(node3.getNodeName().equals(col1))
        {
         nodelist4=node3.getChildNodes();
      
         for(int i=1;i<nodelist4.getLength();){
          node4=nodelist4.item(i);
      
          if(node4.getNodeName().equals("t"))
          {
           nodelist5=node4.getChildNodes();//对应的 值
        
           node5=nodelist5.item(0);
        
          }
       
         i=i+2;
      
         }
        
        }
      
       }    
    
      }
     }
    
    }
   
   }
   
 
  }catch(Exception e)
   {e.printStackTrace();
  }
   if(node5.getNodeValue()==null) return "0";
     else return node5.getNodeValue();
 }
}

Java之DOM,SAX,JDOM,DOM4J,四种解析xml方法比较

4种解析方式的比较 1.DOM解析    优点:a.形成了树结构,直观好理解,代码更易编写          b.解析过程中树结构保留在内存中,方便修改 缺点:         a.当xml...
  • qq_31028891
  • qq_31028891
  • 2016年08月13日 21:29
  • 1495

Java 应用DOM方式解析XML文件

引入java为啥需要解析XML的方法?xml的优势:它可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。 它非常适合万维网传输,提供统一的方法来描述和交换独立于应用程序或...
  • qq_23473123
  • qq_23473123
  • 2016年05月15日 13:53
  • 1811

运用java读取xml文件---DOM 解析

读取本地的xml文件,通过DOM进行解析,DOM解析的特点就是把整个xml文件装载入内存中,形成一颗DOM树形结构,树结构是方便遍历和和操纵。 DOM解析的特性就是读取xml文件转换为 dom树形结...
  • topwqp
  • topwqp
  • 2013年03月21日 16:59
  • 7600

利用Java jdk(dom)解析和写入XML文件

  • 2017年04月27日 18:12
  • 25KB
  • 下载

java之XML文件的解析方法Dom4j

XML文件 XML文件中的存储数据党需要被程序传输并使用的时候,因为XML语法是有别于其它语言的语法的,因此我们需要根据别的语言规则来将XML文件进行解析,我们把这个过程称之为XML数据的解析 X...
  • HKDxiaofan
  • HKDxiaofan
  • 2018年01月08日 22:20
  • 38

Java读取xml文件——DOM解析《Dota2…

尝试使用Java程序的DOM解析方式,解析文件《Dota2_Heros.xml》。 【代码如下】 package sina1_xml_dom; import java.io.IOExceptio...
  • chao2016
  • chao2016
  • 2015年12月19日 09:52
  • 385

Java自定义生成与解析(Dom4J)XML文件

XML(Extensible Markup Language):可扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言。应用:XML 应用于 web 开发的许多方面,常...
  • rickiyeat
  • rickiyeat
  • 2016年09月16日 16:29
  • 2508

JAVA语言利用DOM解析XML文件

利用DOM解析XML文件的时候,会把XML文件预读的内存中,如果是比较大的XML文件或者是移动设备的话,不建议使用此方法 下面是我解析一个XML文件的详细代码 import java.io.I...
  • baolongf
  • baolongf
  • 2011年09月20日 11:44
  • 616

Java之DOM4J方式解析XML文件(学习笔记)

使用DOM4J方式解析XML文件,不是java官方提供的方法,所以我们的需要自己导入一个dom4j-1.6.1.jar包,下载地址为:http://download.csdn.net/detail/x...
  • XX_123_1_RJ
  • XX_123_1_RJ
  • 2014年12月28日 09:55
  • 707

java中以DOM方式来对xml文件进行解析操作

要进行解析的xml文件对象: 冰与火之歌 乔治马丁 2014 89 安徒生童话 安徒生 2017 77 Chinese 源代码: import ...
  • qq_34970891
  • qq_34970891
  • 2017年07月26日 19:43
  • 146
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java 运用dom解析xml文件之一.
举报原因:
原因补充:

(最多只允许输入30个字)