工作遇到接口文档实体类内容很多,就写了一个简单的脚本,在此记录一下
//根据 接口文档栏位项目名称 中文名称 补充说明 生成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;