xml和java Bean的直接转换,Xmap

来源:互联网 发布:破解软件网站大全 编辑:程序博客网 时间:2024/06/06 15:35
[java] view plaincopy
  1. package test;  
  2. import java.util.ArrayList;    
  3. import java.util.List;    
  4.     
  5. import org.nuxeo.common.xmap.annotation.XNode;    
  6. import org.nuxeo.common.xmap.annotation.XNodeList;    
  7. import org.nuxeo.common.xmap.annotation.XObject;    
  8.     
  9.     
  10. /** 
  11.  * Book 实体对象,此处用XMap注解 
  12.  * @author Administrator 
  13.  * 
  14.  */  
  15. @XObject    
  16. public class Book {    
  17.     @XNode("title")    
  18.     private String   title;    
  19.     
  20.     @XNode("@no")    
  21.     private String no;    
  22.         
  23.     @XNodeList(value = "subject", type = ArrayList.class, componentType = String.class)    
  24.     private List<String> subjects;    
  25.         
  26.     @XNode("price")    
  27.     private int   price;    
  28.     
  29.     public String getTitle() {    
  30.         return title;    
  31.     }    
  32.     
  33.     public void setTitle(String title) {    
  34.         this.title = title;    
  35.     }    
  36.     
  37.     public List<String> getSubjects() {    
  38.         return subjects;    
  39.     }    
  40.     
  41.     public void setSubjects(List<String> subjects) {    
  42.         this.subjects = subjects;    
  43.     }    
  44.     
  45.     public int getPrice() {    
  46.         return price;    
  47.     }    
  48.     
  49.     public void setPrice(int price) {    
  50.         this.price = price;    
  51.     }    
  52.     
  53.     public String getNo() {    
  54.         return no;    
  55.     }    
  56.     
  57.     public void setNo(String no) {    
  58.         this.no = no;    
  59.     }    
  60. }    
  61. /**==================================================**/  
  62. package test;  
  63. import java.util.ArrayList;    
  64. import java.util.List;    
  65.     
  66. import org.nuxeo.common.xmap.annotation.XNodeList;    
  67. import org.nuxeo.common.xmap.annotation.XObject;    
  68.     
  69. /** 
  70.  * 图书对象集合类 
  71.  * @author zhouyu 
  72.  * 
  73.  */  
  74. @XObject(value = "books")    
  75. public class Books {        
  76.     @XNodeList(value = "book", type = ArrayList.class, componentType = Book.class)    
  77.     private List<Book> book;    
  78.         
  79.     public List<Book> getBook() {    
  80.         return book;    
  81.     }    
  82.     
  83.     public void setBook(List<Book> book) {    
  84.         this.book = book;    
  85.     }    
  86.         
  87.     public void addBook(Book b){    
  88.         if(book==null){    
  89.             book=new ArrayList<Book>();    
  90.         }    
  91.         book.add(b);    
  92.     }    
  93. }    
  94. /**==================================================**/  
  95. package test;  
  96. import java.util.ArrayList;  
  97. import java.util.List;  
  98. import org.nuxeo.common.xmap.XMap;  
  99. import com.io.IoUtils;  
  100.     
  101.     
  102. /** 
  103.  * 从对象到xml转换 
  104.  * @author zhouyu 
  105.  * 
  106.  */  
  107. public class ObjectToXmlDemo {    
  108.     public static void main(String[] args) {    
  109.         try {    
  110.             //声明一组书的根节点    
  111.             Books books=new Books();    
  112.                 
  113.             //声明一本书    
  114.             Book book=new Book();    
  115.             //书的类型    
  116.             List<String> sj = new ArrayList<String>();    
  117.             sj.add("java");    
  118.             sj.add("xml");    
  119.             //设置书节点的属性    
  120.             book.setPrice(10);    
  121.             book.setTitle("java是傻逼");    
  122.             book.setSubjects(sj);    
  123.             book.setNo("1");    
  124.                 
  125.             //将书节点添加到跟节点    
  126.             books.addBook(book);    
  127.                 
  128.           //声明一本书    
  129.             Book book2=new Book();    
  130.             //书的类型    
  131.             List<String> sj2=new ArrayList<String>();    
  132.             sj2.add("C++");    
  133.             sj2.add("c");    
  134.             //设置书节点的属性    
  135.             book2.setPrice(10);    
  136.             book2.setTitle("c++程序设计");    
  137.             book2.setSubjects(sj2);    
  138.             book2.setNo("2");    
  139.                 
  140.             //将书节点添加到跟节点    
  141.             books.addBook(book2);    
  142.                 
  143.             XMap xmp = new XMap();    
  144.             xmp.register(Books.class);    
  145.     
  146.             List<String> filters = new ArrayList<String>();    
  147.     
  148.             String content = xmp.asXmlString(books, "UTF-8", filters, true);    
  149.               
  150.             IoUtils.WriteFile(content, "UTF-8""books.xml");  
  151.               
  152.               
  153.               
  154.         } catch (Exception e) {    
  155.             e.printStackTrace();    
  156.         }    
  157.     }    
  158. }    
  159. /**==================================================**/  
  160. package test;  
  161. import java.io.File;  
  162. import java.io.FileInputStream;  
  163. import java.io.InputStream;  
  164. import java.net.URL;  
  165. import org.nuxeo.common.xmap.XMap;  
  166. public class XmlToObjectDemo {  
  167.     public static void main(String[] args) {  
  168.         try {  
  169.             XMap xmp = new XMap();  
  170.             xmp.register(Books.class);  
  171.             //URL url = new File("books.xml").toURL();  
  172.             InputStream in = new FileInputStream(new File("books.xml"));  
  173.             Object[] result = (Object[]) xmp.loadAll(in);  
  174.             Books books = (Books) result[0];  
  175.             for(int i = 0 ; i < books.getBook().size() ; i++)  
  176.             {  
  177.                     Book book = books.getBook().get(i);  
  178.                     System.out.println(book.getNo());  
  179.                     System.out.println(book.getPrice());  
  180.                     System.out.println(book.getTitle());  
  181.                     System.out.println(book.getSubjects().get(i));  
  182.             }  
  183.               
  184.         } catch (Exception e) {  
  185.             // TODO Auto-generated catch block  
  186.             e.printStackTrace();  
  187.         }  
  188.     }  
  189. }  
  190. /**==================================================**/  
  191. <?xml version="1.0" encoding="UTF-8" standalone="no"?>  
  192. <books>  
  193.     <book no="1">  
  194.         <title>java是傻逼</title>  
  195.         <subject>java</subject>  
  196.         <subject>xml</subject>  
  197.         <price>10</price>  
  198.     </book>  
  199.     <book no="2">  
  200.         <title>c++程序设计</title>  
  201.         <subject>C++</subject>  
  202.         <subject>c</subject>  
  203.         <price>10</price>  
  204.     </book>  
  205. </books>  
本文转自:http://blog.csdn.net/xiaoyu411502/article/details/5566398
0 0
原创粉丝点击