浅析Castor数据绑定一

一、什么是 XML 数据绑定

在业务开发中,我们曾试过这样的方法来让XML数据与JAVA对象进行转化:

Alarm.xml

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

<alarm>

    <alarmType>

        外部告警

    </alarmType>

    <detailContent>

        告警正文

    </detailContent>

</alarm>

      

Alarm.java

package com.raistlin.test.castor;

 

import org.apache.commons.lang.builder.ToStringBuilder;

import org.apache.commons.lang.builder.ToStringStyle;

 

// 告警实体类

public class Alarm

{

       private String alarmType = null;

 

       private String detailContent = null;

 

       public Alarm()

       {

 

       }

 

       public Alarm(String alarmType, String detailContent)

       {

              this.alarmType = alarmType;

              this.detailContent = detailContent;

       }

 

       public String getAlarmType()

       {

              return alarmType;

       }

 

       public void setAlarmType(String alarmType)

       {

              this.alarmType = alarmType;

       }

 

       public String getDetailContent()

       {

              return detailContent;

       }

 

       public void setDetailContent(String detailContent)

       {

              this.detailContent = detailContent;

       }

 

       public String toString()

       {

              ToStringBuilder builder = new ToStringBuilder(this);

              ToStringBuilder.setDefaultStyle(ToStringStyle.SIMPLE_STYLE);

              builder.append("alarmType", alarmType);

              builder.append("detailContent", detailContent);

              return builder.toString();

       }

 

}

 

 

Parser.java

package com.raistlin.test.castor;

 

import org.jdom.Document;

import org.jdom.Element;

import org.jdom.JDOMException;

import org.jdom.input.SAXBuilder;

 

// XML数据转换为业务对象

// 方法一

public class Parser

{

       public Alarm xml2Alarm(String xmlFileName)

       {

              Alarm alarm = null;

              String alarmType = null;

              String detailContent = null;

              SAXBuilder builder = new SAXBuilder();

              Document doc = null;

              try

              {

                     doc = builder.build(xmlFileName);

              } catch (JDOMException e)

              {

                     e.printStackTrace();

              }

              Element root = doc.getRootElement();

              alarmType = root.getChildTextNormalize("alarmType");

              detailContent = root.getChildTextNormalize("detailContent");

              alarm = new Alarm();

              alarm.setAlarmType(alarmType);

              alarm.setDetailContent(detailContent);

              return alarm;

       }

 

       public static void main(String[] args)

       {

              Parser parser = new Parser();

 

              Alarm alarm = parser.xml2Alarm("d:/Alarm.xml");

 

              System.out.println(alarm);

       }

}

 

       这种将XML数据转换到JAVA对象的过程可以表示为:XML文件->提取数据->填充业务对象。开发过程首先要用XML APIXML文件的结构和数据进行操作,获取其中的具体数据,然后再将其填充到具体对象中,产生业务对象。这样面对数据操作的方法对于复杂的业务对象(比如2030个属性的业务对象很常见)将需要很大的开发工作量,并且容易出错,维护困难。再来看看另一种方法:

 

Parser2.java

package com.raistlin.test.castor;

 

import org.exolab.castor.xml.MarshalException;

import org.exolab.castor.xml.Unmarshaller;

import org.exolab.castor.xml.ValidationException;

import org.xml.sax.InputSource;

 

// XML数据转换为业务对象

// 方法二

public class Parser2

{

       public Alarm xml2Alarm(String xmlFileName)

       {

              Alarm alarm = null;

              try

              {

                     alarm = (Alarm) Unmarshaller.unmarshal(Alarm.class,

                                   new InputSource(xmlFileName));

                    

              } catch (MarshalException e)

              {

                     e.printStackTrace();

              } catch (ValidationException e)

              {

                     e.printStackTrace();

              }

              return alarm;

       }

      

       public static void main (String[] args)

       {

              Parser2 parser = new Parser2();

             

              Alarm  alarm = parser.xml2Alarm("d:/Alarm.xml");

             

              System.out.println(alarm);

             

       }

}

 

第二种将XML文件转换为JAVA对象的过程可以表示为:XML数据->业务对象。开发过程直接将XML文件解组为业务对象,编码简洁,不需要做更多的转换或填充。这种由一套API直接将XML文档转换为JAVA对象的方法,我们称之为XML数据绑定。可以实现数据绑定的API或软件包在JAVA领域有很多种,比如SUNJAXBExolabCastor,还有QuickZeus。这里我主要以Castor为例。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值