zoukankan      html  css  js  c++  java
  • 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=" ";
             
            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!");
            
        }
        
    }

  • 相关阅读:
    Selenium2+python自动化-查看selenium API
    彻底搞懂scrapy的中间件第二章
    彻底搞懂scrapy的中间件第一章
    爬虫面试题
    爬取58同城二手房数据存储到redis数据库和mysql数据库
    Scrapy操作浏览器获取网易新闻数据
    Scrapy框架中的 UA伪装
    scrapy框架中如何使用selenuim
    基于scrapy中---全站爬取数据----CrawlSpider的使用
    基于百度AI的自然语言处理文字分类
  • 原文地址:https://www.cnblogs.com/rspb/p/4113514.html
Copyright © 2011-2022 走看看