castor插件java对象和XML自动绑定maping文件生成和java对象一键生成工具1.2版 +castor转换测试jar包

介绍Castor作为Java对象与XML绑定的开源软件,及其替代JAXB的应用。XML2Maping工具简化了Castor插件使用过程,一键生成Java对象与XML互转所需的配置文件,提高开发效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.castor简介:

castor是一种将java对象和XML自动绑定的开源软件。它可以在java对象、XML文本、SQL数据表以及LDAP目录之间绑定。Castor几乎是JAXB的替代品。Castor是ExoLab Group下面的一个开放源代码的项目,它主要实现的是O/R映射功能。它主要API和数据接口为:JDO-like, SQL, OQL, JDBC, LDAP, XML, DSML。它支持分布式目录事务处理和时间;提供处理XML、Directory、XADirectory的类库,提供从XML到JAVA类的转换机制。Castor(http://castor.exolab..org/)是一种将Java对象和XML自动绑定的开源软件。它可以在Java对象、XML文本、SQL数据表以及LDAP目录之间绑定。

 

2.描述:

使用castor插件进行java对象和xml信息互相直接转换的时候,必须先自己根据xml报文生成对应的maping配置文件和非常麻烦,因为平时有大量不同xml文件需要解析,特别耗时,于是开发出了castor插件java对象和xml互相转换时所需要的maping配置文件和java对象一键生成工具

 

xml2Maping工具   下载地址:https://download.youkuaiyun.com/download/kemoing/10864595

 2.1内容如下图:

  

  1. app                    文件是应用主目录
  2. testfile                是工具示列转换xml报文,以及生成的xmlmping文件和对应vo类
  3. 测试工具包        是调用castor进行xml报文和java对象互相转换示列代码  ps:因打包有问题,无法转换集合类型属性
  4. X2MUTIL.exe    是启动程序应用

 

3.使用方法如下:

 

 

  1).打开工具,密码为:【kemoing】,选择需要解析xml,并填写java对象包名和后缀,如图:

 

2).点击生成,在文件输出目录查看生成文件和maping配置文件,如下图:

 

转换xml报文:

<?xml version="1.0" encoding="UTF-8"?>
<service>
	<sid>标识功能类别</sid>
	<ip>客户端控制台ip地址</ip>
	<port>客户端控制台端口</port>
	<data count="2">
		<!-- iscol 默认为N , xmlmaping 不会体现出来该属性,添加以后会自动 追加 collection="arraylist" 属性-->
		<record iscol="Y">
			<FPZL>发票种类  固定值:
				0:专用发票 
				2:普通发票
				11:货运发票
				12:机动车票
				51:电子发票
			</FPZL>
			<FPHM>发票号码</FPHM>
			<FPDM>发票代码</FPDM>
		</record>
		<record iscol="Y">
			<FPZL>发票种类  固定值:
				0:专用发票 
				2:普通发票
				11:货运发票
				12:机动车票
				51:电子发票
			</FPZL>
			<FPHM>发票号码</FPHM>
			<FPDM>发票代码</FPDM>
		</record>
	</data>
</service>

生成xmlmaping内容如下:

<?xml version="1.0"?><!DOCTYPE mapping PUBLIC "-//EXOLAB/Castor Mapping DTD Version 1.0//EN" "http://castor.org/mapping.dtd">
<mapping>
	<!--********* [record] CLASS START *********-->
	<class name="com.test.devl.mapping.RecordVO">
		<map-to xml="record" />
		<!-- 发票号码 -->
		<field name="fphm" type="java.lang.String">
			<bind-xml name="FPHM"/>
		</field>
		<!-- 发票代码 -->
		<field name="fpdm" type="java.lang.String">
			<bind-xml name="FPDM"/>
		</field>
		<!-- 发票种类  固定值:0:专用发票2:普通发票11:货运发票12:机动车票51:电子发票 -->
		<field name="fpzl" type="java.lang.String">
			<bind-xml name="FPZL"/>
		</field>
	</class>
	<!--********* [record] CLASS END *********-->

	<!--********* [data] CLASS START *********-->
	<class name="com.test.devl.mapping.DataVO">
		<map-to xml="data" />
		<!-- 2 -->
		<field name="count" type="java.lang.String">
			<bind-xml name="count" node="attribute" />
		</field>
		<!-- 请添加字段[record]的注释 -->
		<field name="records" type="com.test.devl.mapping.RecordVO" collection="arraylist">
			<bind-xml name="record"/>
		</field>
	</class>
	<!--********* [data] CLASS END *********-->

	<!--********* [service] CLASS START *********-->
	<class name="com.test.devl.mapping.ServiceVO">
		<map-to xml="service" />
		<!-- 客户端控制台端口 -->
		<field name="port" type="java.lang.String">
			<bind-xml name="port"/>
		</field>
		<!-- 标识功能类别 -->
		<field name="sid" type="java.lang.String">
			<bind-xml name="sid"/>
		</field>
		<!-- 请添加字段[data]的注释 -->
		<field name="data" type="com.test.devl.mapping.DataVO">
			<bind-xml name="data"/>
		</field>
		<!-- 客户端控制台ip地址 -->
		<field name="ip" type="java.lang.String">
			<bind-xml name="ip"/>
		</field>
	</class>
	<!--********* [service] CLASS END *********-->

</mapping>

生成java vo类:

package com.test.devl.mapping;

import java.io.Serializable;

/**
 * <b> 在此处简要描述此类的功能 </b>
 * <p> 在此处添加此类的描述信息</p>
 * 创建日期:2018-12-20 15:41:59
 * @author kemoving 
 * @email kemoing@qq.com 
 * @version auto_gen_vo 1.2
 */

public class TopVO implements Serializable {

	private static final long serialVersionUID = 1L;

}


package com.test.devl.mapping;
/**
 * <b> 在此处简要描述此类的功能 </b>
 * <p> 在此处添加此类的描述信息</p>
 * 创建日期:2018-12-20 15:41:59
 * @author kemoving 
 * @email kemoing@qq.com 
 * @version auto_gen_vo 1.2
 */

public class ServiceVO  extends TopVO{

	private static final long serialVersionUID = 1L;

	public ServiceVO() {
		super();
	}

	/********* [ServiceVO] VO START *********/
	/** 客户端控制台端口 */
	private String port;

	/**
	 * 属性port的Getter方法.
	 * 创建日期:2018-12-20 15:41:59
	 * @return port String
	 */
	public String getPort() {
		return port;
	}

	/**
	 * 属性port的Setter方法.
	 * 创建日期:2018-12-20 15:41:59
	 * @param port String
	 */
	public void setPort(String port) {
		this.port=port;
	}

	/** 标识功能类别 */
	private String sid;

	/**
	 * 属性sid的Getter方法.
	 * 创建日期:2018-12-20 15:41:59
	 * @return sid String
	 */
	public String getSid() {
		return sid;
	}

	/**
	 * 属性sid的Setter方法.
	 * 创建日期:2018-12-20 15:41:59
	 * @param sid String
	 */
	public void setSid(String sid) {
		this.sid=sid;
	}

	/** 请添加字段[data]的注释 */
	private DataVO data;

	/**
	 * 属性data的Getter方法.
	 * 创建日期:2018-12-20 15:41:59
	 * @return data DataVO
	 */
	public DataVO getData() {
		return data;
	}

	/**
	 * 属性data的Setter方法.
	 * 创建日期:2018-12-20 15:41:59
	 * @param data DataVO
	 */
	public void setData(DataVO data) {
		this.data=data;
	}

	/** 客户端控制台ip地址 */
	private String ip;

	/**
	 * 属性ip的Getter方法.
	 * 创建日期:2018-12-20 15:41:59
	 * @return ip String
	 */
	public String getIp() {
		return ip;
	}

	/**
	 * 属性ip的Setter方法.
	 * 创建日期:2018-12-20 15:41:59
	 * @param ip String
	 */
	public void setIp(String ip) {
		this.ip=ip;
	}

	/********* [ServiceVO] VO END *********/

}


package com.test.devl.mapping;
/**
 * <b> 在此处简要描述此类的功能 </b>
 * <p> 在此处添加此类的描述信息</p>
 * 创建日期:2018-12-20 15:41:59
 * @author kemoving 
 * @email kemoing@qq.com 
 * @version auto_gen_vo 1.2
 */

public class DataVO  extends ServiceVO{

	private static final long serialVersionUID = 1L;

	public DataVO() {
		super();
	}

	/********* [DataVO] VO START *********/
	/** 请添加字段[record]的注释 */
	private java.util.ArrayList<RecordVO> records;

	/**
	 * 属性records的Getter方法.
	 * 创建日期:2018-12-20 15:41:59
	 * @return records ArrayList<RecordVO>
	 */
	public java.util.ArrayList<RecordVO> getRecords() {
		return records;
	}

	/**
	 * 属性records的Setter方法.
	 * 创建日期:2018-12-20 15:41:59
	 * @param records ArrayList<RecordVO>
	 */
	public void setRecords(java.util.ArrayList<RecordVO> records) {
		this.records=records;
	}

	/** 2 */
	private String count;

	/**
	 * 属性count的Getter方法.
	 * 创建日期:2018-12-20 15:41:59
	 * @return count String
	 */
	public String getCount() {
		return count;
	}

	/**
	 * 属性count的Setter方法.
	 * 创建日期:2018-12-20 15:41:59
	 * @param count String
	 */
	public void setCount(String count) {
		this.count=count;
	}

	/********* [DataVO] VO END *********/

}


package com.test.devl.mapping;
/**
 * <b> 在此处简要描述此类的功能 </b>
 * <p> 在此处添加此类的描述信息</p>
 * 创建日期:2018-12-20 15:41:59
 * @author kemoving 
 * @email kemoing@qq.com 
 * @version auto_gen_vo 1.2
 */

public class RecordVO  extends DataVO{

	private static final long serialVersionUID = 1L;

	public RecordVO() {
		super();
	}

	/********* [RecordVO] VO START *********/
	/** 发票号码 */
	private String fphm;

	/**
	 * 属性fphm的Getter方法.
	 * 创建日期:2018-12-20 15:41:59
	 * @return fphm String
	 */
	public String getFphm() {
		return fphm;
	}

	/**
	 * 属性fphm的Setter方法.
	 * 创建日期:2018-12-20 15:41:59
	 * @param fphm String
	 */
	public void setFphm(String fphm) {
		this.fphm=fphm;
	}

	/** 发票代码 */
	private String fpdm;

	/**
	 * 属性fpdm的Getter方法.
	 * 创建日期:2018-12-20 15:41:59
	 * @return fpdm String
	 */
	public String getFpdm() {
		return fpdm;
	}

	/**
	 * 属性fpdm的Setter方法.
	 * 创建日期:2018-12-20 15:41:59
	 * @param fpdm String
	 */
	public void setFpdm(String fpdm) {
		this.fpdm=fpdm;
	}

	/** 发票种类  固定值:0:专用发票2:普通发票11:货运发票12:机动车票51:电子发票 */
	private String fpzl;

	/**
	 * 属性fpzl的Getter方法.
	 * 创建日期:2018-12-20 15:41:59
	 * @return fpzl String
	 */
	public String getFpzl() {
		return fpzl;
	}

	/**
	 * 属性fpzl的Setter方法.
	 * 创建日期:2018-12-20 15:41:59
	 * @param fpzl String
	 */
	public void setFpzl(String fpzl) {
		this.fpzl=fpzl;
	}

	/********* [RecordVO] VO END *********/

}



 

 

4.项目环境

前期准备:

下载castor相关jar:下载地址:https://download.youkuaiyun.com/download/kemoing/10865080

 1.引入相关jar包,,如下图:

2.将X2MUTIL生成的java代码和xmlmaping复制到工程内,具体如图:

 

3.将相关jar包、log4j.properties 和ExampleDemo.java代码复制到工程内,并修改相关信息,如下图:

4.运行【ExampleDemo】,结果如下:

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值