xml生成java代码_根据XML数据源生成Java代码

根据XML格式数据源生成Java代码是ArbitraryGen的一个基本能力,如果在没有任何的扩展情况下使用这个能力,并不是我们所推荐的。

下面我们先讲述下如何使用ArbitraryGen通过XML数据源生成Java代码。

ArbitraryGen参数配置

在ArbitraryGen的通用参数配置中配置XML格式文件的后缀名,如示例中配置了"xml","db","greendao", "event"四个后缀名。

arbitraryGen {

templateDir "${project.rootDir.getAbsolutePath()}/ArbitraryGen/template-libs"

srcDir "${project.projectDir.absolutePath}/ag-datasrc"

destDir "$buildDir/generated/source/ag-gen"

general {

enable true

// suffix list

format "xml","db","greendao", "event" // Use XML format parser.

}

}

ArbitraryGen将会扫描${project.projectDir.absolutePath}/ag-datasrc这个目录下,所有满足general.format中配置的后缀的文件,并交予ArbitraryGen的默认源数据Parser解析并由默认的Converter转换成Java代码。

编辑XML文件

import="java.lang.String,java.io.Serializable">

this.name = name;

name

XML文件中的根节点的package属性定义了这个文件中所有以及子节点生成出来的Java类的package,每一个一级子节点都对应着独立的Java文件,一个Java类。

描述Java类的节点

对于一个描述Java类相关信息的XML节点(如上示例中的一级节点),其属性包括name,parent,interface,import,static和final,这些都是和Java类(文件)中的各属性相对应的。(如果name属性没填,则使用节点名作为类名)

其子节点中的节点是用来声明其成员变量的,field标签里面包括name、type、default、static和final。

节点是用来描述类里面的方法定义的,其中属性包括name、type、static和final,其子节点中用于描述方法的参数定义(其属性包括name和type),子节点是方法体中的代码,子节点是return的代码。

除了上述的和之外的子节点,都被视为一个内部类的描述节点。

注:上述XML节点的属性值,如果是支持列表的(如import、interface等)都是通过“,”作为分隔符。

根据上面的规则生成的代码如下:

package cc.suitalk.arbitrarygen.demo.xmlparser;

import java.lang.String;

import java.io.Serializable;

public class XmlTest extends Object implements Serializable {

public String name = null;

public int type = 0;

public Data data = new Data();

public void TestMethod() {

}

public String getName(String name) {

this.name = name;;

return name;

}

public static final class Data {

public int errCode;

public int errType = 0;

}

}

看到这里是不是觉得用XML写Java代码不是自找苦吃吗?其实,这里只是提供了这个基本能力,ArbitraryGen的作用不在这里,他的意义是利用结构XML格式的数据源生成特定的稍微复杂一点的代码,如需深入了解,请移步自定义数据源格式Parser和Converter和自定义TemplateWrapper

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值