xml2bean 把xml文件直接封装成bean

前端之家收集整理的这篇文章主要介绍了xml2bean 把xml文件直接封装成bean前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
公司有个业务,要从ftp下载文件文件中是xml,把xml信息存入数据库,如果一个一个字段去填充bean,那简直是个噩梦,果断写个xml2bean工具,在此分享(有待改进)
  1. private static <T> T XML2Bean(String ecinfo,Class<T> t) throws DocumentException,InstantiationException,IllegalAccessException {
  2. Preconditions.checkArgument(!Strings.isNullOrEmpty(ecinfo)); //google guava api,可以去掉,只是个前置验证
  3. SAXReader saxReader = new SAXReader(); //dom4j api
  4. Document document = saxReader.read(new StringReader(ecinfo));
  5. List<Element> list = document.selectNodes("//*");//获得所有节点
  6. T cinfo = t.newInstance();
  7. for(Element node: list){
  8. System.out.println(node.getName());
  9. fillBean(cinfo,node); //这个api弄得不是太美,可以这样的其实 fillBean(Class<T> t,Node),现在不改了,也可以用的
  10. }
  11. // System.out.println(document.asXML());
  12. return cinfo;
  13. }
  1. private static <T> void fillBean(T t,Node node){
  2. try {
  3. Class<T> eci = (Class<T>) t.getClass();
  4. Method[] methods = eci.getMethods();
  5. for(Method method :methods){
  6. if(method.getName().startsWith("set")){
  7. String methodname = method.getName().substring(3);
  8. if(methodname.equalsIgnoreCase(node.getName())){
  9. method.invoke(t,node.getStringValue()==null?"":node.getStringValue().trim());
  10. }
  11. }
  12. }
  13. } catch (Exception e) {
  14. throw new RuntimeException(e);
  15. }
  16. }
此段代码:要求,xml所有终端节点的tag name要和bean中一直,大小写无所谓。当然,这还有个问题,就是其实现在还是有个问题,要手动写个java bean,其实javabean 完全可以根据dom生成一个,这个工具也比较好开发,只是我做的时候没有开发,下一次再有此业务,在开发个吧

猜你在找的XML相关文章