本文實例講述了java bean與xml互相轉換的方法。分享給大家供大家參考,具體如下:
xml和java bean互相轉換是一個很有用的功能,因為兩者有著前后合作的關系,但解析的過程比較痛苦。下面介紹如何進行xml和java bean的互相轉換。
最近項目中用到了xml和java bean的轉換
用到xml的時候我們需要遍歷解析。。。然后將解析的值放入聲明好的java bean,過程很痛苦,結果很美好
我們能不能直接從xml轉化到java bean呢,或者直接成java bean轉化到xml呢?
答案是ok的
使用jar包:org.nuxeo.common.xmap
寫個小例子
xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
<?xml version= "1.0" encoding= "utf-8" ?> <books> <book no= "1" > <title>java是傻逼</title> <subject>java</subject> <subject>xml</subject> <price> 10 </price> </book> <book no= "2" > <title>c++程序設計</title> <subject>c++</subject> <subject>c</subject> <price> 10 </price> </book> </books> |
books類
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
import java.util.arraylist; import java.util.list; import org.nuxeo.common.xmap.annotation.xnodelist; import org.nuxeo.common.xmap.annotation.xobject; @xobject (value = "books" ) public class books { @xnodelist (value = "book" , type = arraylist. class , componenttype = book. class ) private list< book> book; public list< book> getbook() { return book; } public void setbook(list< book> book) { this .book = book; } public void addbook(book b){ if (book== null ){ book= new arraylist< book>(); } book.add(b); } } |
book類
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
import java.util.arraylist; import java.util.list; import org.nuxeo.common.xmap.annotation.xnode; import org.nuxeo.common.xmap.annotation.xnodelist; import org.nuxeo.common.xmap.annotation.xobject; @xobject public class book { @xnode ( "title" ) private string title; @xnode ( "@no" ) private string no; @xnodelist (value = "subject" , type = arraylist. class , componenttype = string. class ) private list< string> subjects; @xnode ( "price" ) private int price; public string gettitle() { return title; } public void settitle(string title) { this .title = title; } public list< string> getsubjects() { return subjects; } public void setsubjects(list< string> subjects) { this .subjects = subjects; } public int getprice() { return price; } public void setprice( int price) { this .price = price; } public string getno() { return no; } public void setno(string no) { this .no = no; } } |
測試類:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
import java.util.arraylist; import java.util.list; import org.nuxeo.common.xmap.xmap; public class xmaptest { public static void main(string[] args) { try { //聲明一組書的根節點 books books= new books(); //聲明一本書 book book= new book(); //書的類型 list< string> sj= new arraylist< string>(); sj.add( "java" ); sj.add( "xml" ); //設置書節點的屬性 book.setprice( 10 ); book.settitle( "java是傻逼" ); book.setsubjects(sj); book.setno( "1" ); //將書節點添加到跟節點 books.addbook(book); //聲明一本書 book book2= new book(); //書的類型 list< string> sj2= new arraylist< string>(); sj2.add( "c++" ); sj2.add( "c" ); //設置書節點的屬性 book2.setprice( 10 ); book2.settitle( "c++程序設計" ); book2.setsubjects(sj2); book2.setno( "2" ); //將書節點添加到跟節點 books.addbook(book2); xmap xmp = new xmap(); xmp.register(books. class ); list< string> filters = new arraylist< string>(); system.out.println(xmp.asxmlstring(books, "utf-8" , filters, true )); } catch (exception e) { e.printstacktrace(); } } } |
運行上面這個類就可以生成開頭所看見的那個xml的內容
解析xml
1
2
3
4
5
|
xmap.register(books. class ); url url = new file( "book.xml" ).tourl(); inputstream in = new fileinputstream( new file( "book.xml" )); object[] result = (object[]) xmap.loadall(in); books books=(books)result[ 0 ]; |
數據就完全autowire by name進入到了bean,某些情況下很好用(xml很整齊,每個節點的內容都一樣,固定)
xml和java bean互相轉換就此實現。
ps:這里再為大家推薦幾款相關在線工具供大家參考:
xml在線壓縮/格式化工具:https://tool.zzvips.com/t/xml/
希望本文所述對大家java程序設計有所幫助。
原文鏈接:https://www.cnblogs.com/aademeng/articles/6235950.html