工作遇到接口文档实体类内容很多,就写了一个简单的脚本,在此记录一下
- //根据 接口文档栏位项目名称 中文名称 补充说明 生成XMLmodel类
- //每行以$$$开头 第一列为$$$
- public static void generateCommonApiModel(String str) {
- int indexOfPP = 0;
- //每行开头
- String linePrefix = "$$$";
- //字段名过滤的字符
- String varNameSkipStr = "[..]";
- //截取的列
- int [] contentIndexes = new int[]{1,2,3};
- String rstContent = "";
- while (str.indexOf(linePrefix, indexOfPP) > -1) {
- //截取下一个..和当前..中间的内容,以及最后一个..以后的内容
- int currPP = str.indexOf(linePrefix, indexOfPP);
- String line;
- if (currPP + linePrefix.length() < str.length()) {
- int nextPP = str.indexOf(linePrefix, currPP + linePrefix.length());
- if (nextPP > 0) {
- line = str.substring(currPP + linePrefix.length(), nextPP);
- indexOfPP = nextPP;
- } else {
- //最后一个
- line = str.substring(currPP + linePrefix.length());
- indexOfPP = str.length()-1;
- }
- } else {
- //最后一个
- line = str.substring(currPP + linePrefix.length());
- indexOfPP = str.length()-1;
- }
- String[] cells = line.split("[\t]");
- //@XmlElement(name = "Cur_SbmTm")
- // private String curSbmTm;
- String content ="/**\n";
- content += " * "+cells[contentIndexes[1]];
- if (cells.length > contentIndexes[2]) {
- for (int i = contentIndexes[2]; i < cells.length; i ++) {
- content += " "+cells[i].replaceAll("\n", "");
- }
- }
- content+= "\n */\n";
- String varName = cells[contentIndexes[0]].replaceAll(varNameSkipStr, "");
- content += "@XmlElement(name = \""+varName+"\")\n";
-
- content +="@XmlJavaTypeAdapter(CDataAdapter.class)\n";
- content += "private String "+ StringUtils.toCamelCase(varName) +";";
- content +="\n";
- rstContent += content;
- System.out.print("");
- }
- System.out.println(rstContent);
- }
-
- public static void main(String[] args) {
- String str = "$$$\tname\t姓名\t客户姓名\n" +
- "$$$\tage\t年龄\t客户年龄\n" +
- "$$$\tweight\t体重\t客户体重\n" +
- "$$$\theight\t身高\t客户身高\n"
- ;
- generateCommonApiModel(str);
- }
输出:
/**
* 姓名 客户姓名
*/
@XmlElement(name = "name")
@XmlJavaTypeAdapter(CDataAdapter.class)
private String name;
/**
* 年龄 客户年龄
*/
@XmlElement(name = "age")
@XmlJavaTypeAdapter(CDataAdapter.class)
private String age;
/**
* 体重 客户体重
*/
@XmlElement(name = "weight")
@XmlJavaTypeAdapter(CDataAdapter.class)
private String weight;
/**
* 身高 客户身高
*/
@XmlElement(name = "height")
@XmlJavaTypeAdapter(CDataAdapter.class)
private String height;