Java Bean与xml互相转换的方法分析
本文实例讲述了JavaBean与xml互相转换的方法。分享给大家供大家参考,具体如下:
XML和JavaBean互相转换是一个很有用的功能,因为两者有着前后合作的关系,但解析的过程比较痛苦。下面介绍如何进行XML和JavaBean的互相转换。
最近项目中用到了xml和javabean的转换
用到xml的时候我们需要遍历解析。。。然后将解析的值放入声明好的javabean,过程很痛苦,结果很美好
我们能不能直接从xml转化到javabean呢,或者直接成javabean转化到xml呢?
答案是OK的
使用jar包:org.nuxeo.common.xmap
写个小例子
XML
java是傻逼 java xml 10 c++程序设计 C++ c 10
Books类
importjava.util.ArrayList; importjava.util.List; importorg.nuxeo.common.xmap.annotation.XNodeList; importorg.nuxeo.common.xmap.annotation.XObject; @XObject(value="books") publicclassBooks{ @XNodeList(value="book",type=ArrayList.class,componentType=Book.class) privateListbook; publicList getBook(){ returnbook; } publicvoidsetBook(List book){ this.book=book; } publicvoidaddBook(Bookb){ if(book==null){ book=newArrayList (); } book.add(b); } }
Book类
importjava.util.ArrayList; importjava.util.List; importorg.nuxeo.common.xmap.annotation.XNode; importorg.nuxeo.common.xmap.annotation.XNodeList; importorg.nuxeo.common.xmap.annotation.XObject; @XObject publicclassBook{ @XNode("title") privateStringtitle; @XNode("@no") privateStringno; @XNodeList(value="subject",type=ArrayList.class,componentType=String.class) privateListsubjects; @XNode("price") privateintprice; publicStringgetTitle(){ returntitle; } publicvoidsetTitle(Stringtitle){ this.title=title; } publicList getSubjects(){ returnsubjects; } publicvoidsetSubjects(List subjects){ this.subjects=subjects; } publicintgetPrice(){ returnprice; } publicvoidsetPrice(intprice){ this.price=price; } publicStringgetNo(){ returnno; } publicvoidsetNo(Stringno){ this.no=no; } }
测试类:
importjava.util.ArrayList; importjava.util.List; importorg.nuxeo.common.xmap.XMap; publicclassXmapTest{ publicstaticvoidmain(String[]args){ try{ //声明一组书的根节点 Booksbooks=newBooks(); //声明一本书 Bookbook=newBook(); //书的类型 Listsj=newArrayList (); sj.add("java"); sj.add("xml"); //设置书节点的属性 book.setPrice(10); book.setTitle("java是傻逼"); book.setSubjects(sj); book.setNo("1"); //将书节点添加到跟节点 books.addBook(book); //声明一本书 Bookbook2=newBook(); //书的类型 List sj2=newArrayList (); sj2.add("C++"); sj2.add("c"); //设置书节点的属性 book2.setPrice(10); book2.setTitle("c++程序设计"); book2.setSubjects(sj2); book2.setNo("2"); //将书节点添加到跟节点 books.addBook(book2); XMapxmp=newXMap(); xmp.register(Books.class); List filters=newArrayList (); System.out.println(xmp.asXmlString(books,"UTF-8",filters,true)); }catch(Exceptione){ e.printStackTrace(); } } }
运行上面这个类就可以生成开头所看见的那个XML的内容
解析xml
xmap.register(Books.class); URLurl=newFile("book.xml").toURL(); InputStreamin=newFileInputStream(newFile("book.xml")); Object[]result=(Object[])xmap.loadAll(in); Booksbooks=(Books)result[0];
数据就完全autowirebyname进入到了bean,某些情况下很好用(xml很整齐,每个节点的内容都一样,固定)
XML和JavaBean互相转换就此实现。
PS:这里再为大家推荐几款相关在线工具供大家参考:
在线JSON转JavaBean代码工具:
http://tools.jb51.net/code/json2javabean
在线XML/JSON互相转换工具:
http://tools.jb51.net/code/xmljson
XML在线压缩/格式化工具:
http://tools.jb51.net/code/xml_format_compress
更多关于java算法相关内容感兴趣的读者可查看本站专题:《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总》
希望本文所述对大家java程序设计有所帮助。