XML和JavaBean的互相转换攻略

XML和Java Bean互相转换是一个很有用的功能,因为两者有着前后合作的关系,但解析的过程比较痛苦。下面介绍如何进行XML和Java Bean的互相转换。

10年积累的成都做网站、成都网站制作、成都外贸网站建设经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站制作后付款的网站建设流程,更有天河免费网站建设让你可以放心的选择与我们合作。

最近项目中用到了xml和java bean的转换

用到xml的时候我们需要遍历解析。。。然后将解析的值放入声明好的java bean,过程很痛苦,结果很美好

我们能不能直接从xml转化到java bean呢,或者直接成java bean转化到xml呢?

答案是OK的

使用jar包:org.nuxeo.common.xmap

写个小例子

XML

 
 
 
  1. < ?xml version="1.0" encoding="UTF-8"?>    
  2. < books>    
  3. < book no="1">    
  4. < title>java是傻逼< /title>    
  5. < subject>java< /subject>    
  6. < subject>xml< /subject>    
  7. < price>10< /price>    
  8. < /book>    
  9. < book no="2">    
  10. < title>c++程序设计< /title>    
  11. < subject>C++< /subject>    
  12. < subject>c< /subject>    
  13. < price>10< /price>    
  14. < /book>    
  15. < /books>   

Books类

 
 
 
  1. import java.util.ArrayList;    
  2. import java.util.List;    
  3.     
  4. import org.nuxeo.common.xmap.annotation.XNodeList;    
  5. import org.nuxeo.common.xmap.annotation.XObject;    
  6.     
  7. @XObject(value = "books")    
  8. public class Books {        
  9.     @XNodeList(value = "book", type = ArrayList.class, componentType = Book.class)    
  10.     private List< Book> book;    
  11.         
  12.     public List< Book> getBook() {    
  13.         return book;    
  14.     }    
  15.     
  16.     public void setBook(List< Book> book) {    
  17.         this.book = book;    
  18.     }    
  19.         
  20.     public void addBook(Book b){    
  21.         if(book==null){    
  22.             book=new ArrayList< Book>();    
  23.         }    
  24.         book.add(b);    
  25.     }    
  26. }    
  27.  

Book类

 
 
 
  1. import java.util.ArrayList;    
  2. import java.util.List;    
  3.     
  4. import org.nuxeo.common.xmap.annotation.XNode;    
  5. import org.nuxeo.common.xmap.annotation.XNodeList;    
  6. import org.nuxeo.common.xmap.annotation.XObject;    
  7.     
  8.     
  9. @XObject    
  10. public class Book {    
  11.     @XNode("title")    
  12.     private String   title;    
  13.     
  14.     @XNode("@no")    
  15.     private String no;    
  16.         
  17.     @XNodeList(value = "subject", type = ArrayList.class, componentType = String.class)    
  18.     private List< String> subjects;    
  19.         
  20.     @XNode("price")    
  21.     private int   price;    
  22.     
  23.     public String getTitle() {    
  24.         return title;    
  25.     }    
  26.     
  27.     public void setTitle(String title) {    
  28.         this.title = title;    
  29.     }    
  30.     
  31.     public List< String> getSubjects() {    
  32.         return subjects;    
  33.     }    
  34.     
  35.     public void setSubjects(List< String> subjects) {    
  36.         this.subjects = subjects;    
  37.     }    
  38.     
  39.     public int getPrice() {    
  40.         return price;    
  41.     }    
  42.     
  43.     public void setPrice(int price) {    
  44.         this.price = price;    
  45.     }    
  46.     
  47.     public String getNo() {    
  48.         return no;    
  49.     }    
  50.     
  51.     public void setNo(String no) {    
  52.         this.no = no;    
  53.     }    
  54. }    
  55.  

测试类:

 
 
 
  1. import java.util.ArrayList;    
  2. import java.util.List;    
  3.     
  4. import org.nuxeo.common.xmap.XMap;    
  5.     
  6.     
  7. public class XmapTest {    
  8.     public static void main(String[] args) {    
  9.         try {    
  10.             //声明一组书的根节点    
  11.             Books books=new Books();    
  12.                 
  13.             //声明一本书    
  14.             Book book=new Book();    
  15.             //书的类型    
  16.             List< String> sj=new ArrayList< String>();    
  17.             sj.add("java");    
  18.             sj.add("xml");    
  19.             //设置书节点的属性    
  20.             book.setPrice(10);    
  21.             book.setTitle("java是傻逼");    
  22.             book.setSubjects(sj);    
  23.             book.setNo("1");    
  24.                 
  25.             //将书节点添加到跟节点    
  26.             books.addBook(book);    
  27.                 
  28.           //声明一本书    
  29.             Book book2=new Book();    
  30.             //书的类型    
  31.             List< String> sj2=new ArrayList< String>();    
  32.             sj2.add("C++");    
  33.             sj2.add("c");    
  34.             //设置书节点的属性    
  35.             book2.setPrice(10);    
  36.             book2.setTitle("c++程序设计");    
  37.             book2.setSubjects(sj2);    
  38.             book2.setNo("2");    
  39.                 
  40.             //将书节点添加到跟节点    
  41.             books.addBook(book2);    
  42.                 
  43.             XMap xmp = new XMap();    
  44.             xmp.register(Books.class);    
  45.     
  46.             List< String> filters = new ArrayList< String>();    
  47.     
  48.             System.out.println(xmp.asXmlString(books, "UTF-8", filters, true));    
  49.         } catch (Exception e) {    
  50.             e.printStackTrace();    
  51.         }    
  52.     }    
  53. }    
  54.  

运行上面这个类就可以生成开头所看见的那个XML的内容

解析xml

 
 
 
  1. xmap.register(Books.class);    
  2.             URL url = new File("book.xml").toURL();    
  3.             InputStream in = new FileInputStream(new File("book.xml"));    
  4.             Object[] result = (Object[]) xmap.loadAll(in);    
  5.     
  6. Books books=(Books)result[0];    
  7.  

数据就完全autowire by name进入到了bean,某些情况下很好用(xml很整齐,每个节点的内容都一样,固定)

XML和Java Bean互相转换就此实现。

网站栏目:XML和JavaBean的互相转换攻略
当前URL:http://www.shufengxianlan.com/qtweb/news12/188062.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联