自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

XML和Java Bean的互相轉(zhuǎn)換攻略

開發(fā) 后端
本文介紹XML和Java Bean互相轉(zhuǎn)換是如何實(shí)現(xiàn)的。

XML和Java Bean互相轉(zhuǎn)換是一個(gè)很有用的功能,因?yàn)閮烧哂兄昂蠛献鞯年P(guān)系,但解析的過程比較痛苦。下面介紹如何進(jìn)行XML和Java Bean的互相轉(zhuǎn)換。

最近項(xiàng)目中用到了xml和java bean的轉(zhuǎn)換

用到xml的時(shí)候我們需要遍歷解析。。。然后將解析的值放入聲明好的java bean,過程很痛苦,結(jié)果很美好

我們能不能直接從xml轉(zhuǎn)化到j(luò)ava bean呢,或者直接成java bean轉(zhuǎn)化到xml呢?

答案是OK的

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

寫個(gè)小例子

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++程序設(shè)計(jì)< /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.             //聲明一組書的根節(jié)點(diǎn)    
  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.             //設(shè)置書節(jié)點(diǎn)的屬性    
  20.             book.setPrice(10);    
  21.             book.setTitle("java是傻逼");    
  22.             book.setSubjects(sj);    
  23.             book.setNo("1");    
  24.                 
  25.             //將書節(jié)點(diǎn)添加到跟節(jié)點(diǎn)    
  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.             //設(shè)置書節(jié)點(diǎn)的屬性    
  35.             book2.setPrice(10);    
  36.             book2.setTitle("c++程序設(shè)計(jì)");    
  37.             book2.setSubjects(sj2);    
  38.             book2.setNo("2");    
  39.                 
  40.             //將書節(jié)點(diǎn)添加到跟節(jié)點(diǎn)    
  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.  

運(yùn)行上面這個(gè)類就可以生成開頭所看見的那個(gè)XML的內(nèi)容

解析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.  

數(shù)據(jù)就完全autowire by name進(jìn)入到了bean,某些情況下很好用(xml很整齊,每個(gè)節(jié)點(diǎn)的內(nèi)容都一樣,固定)

XML和Java Bean互相轉(zhuǎn)換就此實(shí)現(xiàn)。

【編輯推薦】

  1. JSP和BEAN詳細(xì)剖析
  2. Servlet和JSP經(jīng)驗(yàn)總結(jié)
  3. 帶參數(shù)方法調(diào)用JSP EL表達(dá)式
  4. 詳解JSP開發(fā)環(huán)境的配置
  5. 全面介紹JSP標(biāo)準(zhǔn)標(biāo)記庫JSTL
責(zé)任編輯:yangsai 來源: JavaEye博客
相關(guān)推薦

2020-10-22 08:01:52

XMLJSON轉(zhuǎn)換

2009-06-23 14:22:00

DOM文檔XML文件Java

2012-06-29 13:45:53

XML

2009-08-13 09:33:07

JavaBean到XM

2021-06-18 07:35:46

Java接口應(yīng)用

2013-06-08 11:13:00

Android開發(fā)XML解析

2019-12-16 10:13:16

Python字符串數(shù)據(jù)

2009-06-15 15:10:02

Java數(shù)據(jù)轉(zhuǎn)換JSON

2009-06-18 11:15:53

裝配beanxml配置Spring

2011-11-29 13:53:34

ADO.NET

2009-09-08 16:55:01

Linq實(shí)現(xiàn)XML轉(zhuǎn)換

2009-04-21 13:14:33

SilverlightWPF擴(kuò)展

2021-06-10 06:57:39

Spring.xmlBean對(duì)象

2015-11-24 09:53:22

AngularJSXMLJSON

2009-07-03 14:40:33

2010-01-07 15:41:58

XML轉(zhuǎn)換為JSON

2011-06-15 12:36:58

JSPBEAN

2009-09-02 10:26:23

JSP和BEAN

2009-07-01 14:09:24

Servlet和BeaJSP

2022-07-20 07:45:52

POJOJavaSpring IoC
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)