java jaxb代码自动生成

package code;

import java.io.FileReader;
import java.io.FileWriter;
import java.io.LineNumberReader;
import java.util.ArrayList;
import java.util.List;

import javax.xml.bind.annotation.XmlAttribute;

public class CodeXmlElem {
    
    private static List<String> readFile(String filename)
    {
        List<String> fileline = new ArrayList<String>();
        
        try {
            
            FileReader in = new FileReader(filename);
            LineNumberReader reader = new LineNumberReader(in);
            
            String s = reader.readLine();
            while( s != null )
            {
                if(!s.startsWith("#"))
                {
                    fileline.add(s);
                }
                s = reader.readLine();
            }
            
            reader.close();
            in.close();
        }catch(Exception e)
        {
            e.printStackTrace();
        }
        
        return fileline;
    }

public static void genarateCode(List<String> line)
    {
        String cr="\r\n";
         
        try{
            
            String [] data = line.get(1).split(",");
            FileWriter fw = new FileWriter(data[1]+".java");
            fw.write(cr);
            data = line.get(0).split(",");
            fw.write("package "+data[1]+cr);
            fw.write(cr);
            fw.write(cr);
            fw.write("import javax.xml.bind.JAXBContext;"+cr);
            fw.write("import javax.xml.bind.JAXBException;"+cr);
            fw.write("import javax.xml.bind.Marshaller;"+cr);
            fw.write("import javax.xml.bind.annotation.XmlAccessType;"+cr);
            fw.write("import javax.xml.bind.annotation.XmlAccessorType;"+cr);
            fw.write("import javax.xml.bind.annotation.XmlAttribute;"+cr);
            fw.write(cr);
            fw.write(cr);
            fw.write("@XmlRootElement"+cr);
            fw.write("@XmlAccessorType(XmlAccessType.FIELD)"+cr);
            data = line.get(1).split(",");
            fw.write("public class "+data[1]+"  {"+cr);
            fw.write(cr);
            for(int i = 2;i < line.size();i++)
            {
                data = line.get(i).split(",");
                if(data[1].trim().equalsIgnoreCase("int"))
                {
                   fw.write("@XmlElement(name = \""+data[0]+"\")"+cr);
                   fw.write("private Integer "+toLowerCaseFirst(data[0])+";"+cr);
                }
                else if(data[1].trim().equalsIgnoreCase("string"))
                {
                    fw.write("@XmlElement(name = \""+data[0]+"\")"+cr);
                    fw.write("private String "+toLowerCaseFirst(data[0])+";"+cr);
                }
                else
                {
                   fw.write("@XmlElement(name = \""+data[0]+"\")"+cr);
                   fw.write("private "+ data[1]+" "+toLowerCaseFirst(data[0])+";"+cr);
                }
            }
            
            fw.write(cr);
            fw.write(cr);
            
            for(int i = 2;i < line.size();i++)
             {
                  data = line.get(i).split(",");
                 if(data[1].trim().equalsIgnoreCase("int"))
                 {
                     fw.write("public void set"+data[0]+"(Integer value)"+cr);
                     fw.write("{"+cr);
                     fw.write("    "+toLowerCaseFirst(data[0])+" = "+"value;"+cr);
                     fw.write("}"+cr);

fw.write("public Integer get"+data[0]+"()"+cr);
                     fw.write("{"+cr);
                     fw.write("    return "+toLowerCaseFirst(data[0])+";"+cr);
                     fw.write("}"+cr);
                 }
                 else if(data[1].trim().equalsIgnoreCase("string"))
                 {
                     fw.write("public void set"+data[0]+"(String value)"+cr);
                   fw.write("{"+cr);
                   fw.write("    "+toLowerCaseFirst(data[0])+" = "+"value;"+cr);
                   fw.write("}"+cr);

fw.write("public String get"+data[0]+"()"+cr);
                   fw.write("{"+cr);
                   fw.write("    return "+toLowerCaseFirst(data[0])+";"+cr);
                   fw.write("}"+cr);
                 }
               else
               {
                   fw.write("public void set"+data[0]+"("+data[1]+" value)"+cr);
                 fw.write("{"+cr);
                 fw.write("    "+toLowerCaseFirst(data[0])+" = "+"value;"+cr);
                 fw.write("}"+cr);

fw.write("public "+data[1]+" get"+data[0]+"()"+cr);
                 fw.write("{"+cr);
                 fw.write("    return "+toLowerCaseFirst(data[0])+";"+cr);
                 fw.write("}"+cr);
               }
             }
            fw.write(cr+cr);
            
            
            
            data = line.get(1).split(",");
            fw.write("public static "+data[1].trim()+" ");
            fw.write(" parse"+data[1].trim()+"XML(String xml)"+cr);
            fw.write("{"+cr);
            fw.write("    JAXBContext jaxbContext;"+cr);
            fw.write("    try"+cr);
            fw.write("    {"+cr);
            fw.write("        jaxbContext = JAXBContext.newInstance("+data[1].trim()+".class);"+cr);
            fw.write("        Unmarshaller u = jaxbContext.createUnmarshaller();"+cr);
            fw.write("        return ("+data[1].trim()+")u.unmarshal(new StreamSource(new StringReader(xml)));"+cr);
            fw.write(cr);
            fw.write("    }"+cr);
            fw.write("    catch(JAXBException e)"+cr);
            fw.write("    {"+cr);
            fw.write("        e.printStackTrace();"+cr);
            fw.write("        return null;"+cr);
            fw.write("    }"+cr);
            fw.write("}"+cr);
            fw.write(cr+cr);
            
            
            
            fw.write("public  String ");
            fw.write(" create"+data[1].trim()+"XML(String xml)"+cr);
            fw.write("{"+cr);
            fw.write("    JAXBContext jaxbContext;"+cr);
            fw.write("    try"+cr);
            fw.write("    {"+cr);
            fw.write("        jaxbContext = JAXBContext.newInstance("+data[1].trim()+".class);"+cr);
            fw.write("        Unmarshaller u = jaxbContext.createUnmarshaller();"+cr);
            fw.write("        marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);"+cr);
            fw.write("        marshaller.setProperty(Marshaller.JAXB_ENCODING, \"UTF-8\");"+cr);
            fw.write("        marshaller.setProperty(Marshaller.JAXB_FRAGMENT, true);//省略xml头信息"+cr);
            fw.write("        String xmlHeard = \"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\\n\";"+cr);
            fw.write("        StringWriter sw = new StringWriter();"+cr);
            fw.write("        marshaller.marshal(this, sw);"+cr);
            fw.write("        return xmlHeard + sw.toString();"+cr);
            fw.write(cr);
            fw.write("    }"+cr);
            fw.write("    catch(JAXBException e)"+cr);
            fw.write("    {"+cr);
            fw.write("        e.printStackTrace();"+cr);
            fw.write("        return null;"+cr);
            fw.write("    }"+cr);
            fw.write("}"+cr);
            fw.write(cr+cr);
            
            fw.write(cr+cr);
            
            fw.write("} "+cr);
            fw.close();
        }catch(Exception e)
        {

}
    }
    
    public static String toLowerCaseFirst(String str)
    {
        StringBuilder sb = new StringBuilder(str);
        sb.setCharAt(0, Character.toLowerCase(sb.charAt(0)));
        str = sb.toString();
        return  str;
    }
    
    public static void main(String args[])
    {
        
         List<String> fileline = readFile("field.txt");
        
          genarateCode(fileline);
          System.out.println("success!");
        
    }
    
}

时间: 2024-10-01 02:45:28

java jaxb代码自动生成的相关文章

java jaxb att自动生成

package code; import java.io.FileReader;import java.io.FileWriter;import java.io.LineNumberReader;import java.util.ArrayList;import java.util.List; import javax.xml.bind.annotation.XmlAttribute; public class CodeXmlAttr {        private static List<S

java json代码自动生成

package code; import java.io.FileReader;import java.io.FileWriter;import java.io.LineNumberReader;import java.util.ArrayList;import java.util.List; public class Code {        private static List<String> readFile(String filename)    {        List<

MyBatis代码自动生成

MyBatis的代码自动生成的功能,由于MyBatis属于一种半自动的ORM框架,所以主要的工作就是配置Mapping映射文件,但是由于手写映射文件很容易出错,所以可利用MyBatis生成器自动生成实体类.DAO接口和Mapping映射文件.这样可以省去很多的功夫,将生成的代码copy到项目工程中即可. 使用自动生成有很多方式,可以在eclipse中安装插件,但是以下将要介绍的这种方式我认为很轻松,最简单,不需要装插件,只需要下几个jar包即可,把它们放在一个目录下面. 生成代码需要的文件和ja

如何根据动态SQL代码自动生成DTO

当前的状况 一般做数据库相关开发, 除非学习, 否则很少有人愿意直接使用JDBC.本来Java代码就比较啰嗦了,而直接用JDBC写代码之啰嗦简直有些令人发狂!所以在实际开发过程中,我们通常都会使用一些框架/库来帮助我们操作数据库.而且开源市场上的选择也比较多,就我个人接触到的有:Hibernate,MyBatis,JdbcTemplate,DbUtils,ActiveRecord,JavaLite等等. 这些框架都能大幅的提高开发效率,对于一些基本CRUD操作来说,虽然各有差异,但总的来说基本是

mybatis-generator 代码自动生成插件

Hibernate 可以选择MyEclipse Datebase Explorer 或者是 Hibernate-tools 等工具来自动生成映射文件和实体类. mybatis 当然也要有!下面简单介绍一个代码自动生成插件:mybatis-generator. mybatis-generator有三种用法:命令行.eclipse插件.maven插件. 作为一个使用idea开发的程序猿来说势必选择maven插件了.其他两种方式就不再此介绍了,因为我没有用过啊--- 仅仅需要简单的三步就可以啦,就是这

mybatisGenerator 代码自动生成报错 Result Maps collection already contains value for BaseResultMap

由于mybatis简单易学,比起Hibername来,更容易上手,代码也能自动生成.这几天研究了下代码自动生成的,参考: http://0609xiaohua.iteye.com/blog/1453570 但是把代码复制进来,运行了下,却跑不起来,报以下错误: Exception in thread "main" java.lang.ExceptionInInitializerError at com.test.Test.main(Test.java:12)Caused by: org

Mybatis最入门---代码自动生成(generatorConfig.xml配置)

第一种方式:通过Main方法执行配置文件. ------------------------------------------------------------------------------------------------------------------------------------- 1.创建本文我们将使用的工程Mybatis13,工程结构图如下:[重点文件我们给出,其他配置文件请读者参考前文工程] 2.修改jdbc.properties文件,具体内容如下: jdbc.

iBatis 代码自动生成工具 iBator 及 Example 使用

iBator的下载和安装 官方下载地址:http://people.apache.org/builds/ibatis/ibator/ 安装:见<Eclipse 插件安装> 安装完成后,“File” —> "New" —> "Other..." iBatis 代码自动生成工具 iBator - 低调的华丽 - 辉色空间 选择项目名 —> "New" —> "Other..." —> “N

MyBatise代码自动生成时候Oralce的number类型BigDecimal问题

第一次使用MyBatise发现一个问题,使用MyBatise的代码自动生成工具时候,即便在配置文件中定义了 Xml代码   <javaTypeResolver> <property name="forceBigDecimals" value="false" /> </javaTypeResolver> <javaTypeResolver> <property name="forceBigDecimals