从XML元素结构到JAVA实现

本文从XML元素角度,介绍了Java实现XML操作的方法。指出XML由多种基本类型元素组成,如XMLElement等。以一个XML - EXCEL配置文件为例,说明了各元素类型,还给出cell元素的代码示例,并提供了源代码下载链接。

前几个月,做项目时整理过一些XML操作的程序。这里根据自己的编程习惯再做一下整理。XML操作最基本的是SAXDOM了。但这里不是谈SAXDOM怎么使用。而是从XML元素的角度谈其java的实现。XML是由多个元素组成,可以分成XMLElementXMLSimpleElementXMLComplexElementXMLCollectionXMLCollectionElement等几种基本类型,从类名你基本就可以判断出该类所描述的XML对象了。

下面以一个例子来做描述:

<?xml version="1.0" encoding="GB2312"?>

<Package name = "abc">

    <File name = "file">

        <Sheet  name = "sheet">

           <Styles>

               <style id = "0" name = "a">

                   <align>2</align>

                   <borders>

                      <border id = "0" type = "left" value = "1" />

                      <border id = "1" type = "right" value = "3" />

                   </borders>

                  <font name = "宋体" color = "3" height = "20" />

               </style>

           </Styles>

           <Columns>

               <Column id = "0"  columnid = "0" width = "10" />

           </Columns>

           <Regions>

               <Region id = "0" rowid = "1" columnform = "0" columnto = "3" />

           </Regions>

           <Cells>

               <cell  id = "1" row="0" column = "0" style = "a"  value ="测试"/>

               <cell  id = "2" row="2" column = "2" value =" 测试2" />

               </Cells>

        </Sheet>

    </File>

</Package>

 

该配置文件是个XML—>EXCELXML文件描述了EXCEL中的一些对象比如文件名字体列等。其中Package是一个XMLComplexElement(混合类型),Cells(单元格集)是个XMLCollection(容器类),cell (单元格)是XMLCollectionElement(容器中的元素)<cell  id = "1" row="0" column = "0" style = "a"  value ="测试"/>

中的id 就是XMLAttribute属性。所有的XML文件都是由这些基本的元素组成。定义出最基本的XML元素后,那么在程式中怎么也把它们之间的关系定义出来呢?以cell元素为例子代码如下:

public class Cell extends XMLCollectionElement {

       private XMLAttribute attrRow=new XMLAttribute("row");

       private XMLAttribute attrStyle=new XMLAttribute("style");

       private XMLAttribute attrColumn=new XMLAttribute("column");

       private XMLAttribute attrValue=new XMLAttribute("value");

       private XMLInterface xmlInterface = null ;

      

    public Cell (Cells ass) {

             super(ass);

             fillStructure();

       }

       protected void fillStructure() {

                 super.fillStructure();

              attrId.setReadOnly(true);

                 isRequired=true;

                 complexStructure.add(attrStyle);

                 complexStructure.add(attrRow);

                 complexStructure.add(attrColumn);

                 complexStructure.add(attrValue);

       }

}

 

源代码下载 http://www.51sports.org/xml.rar

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值