好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

Java Bean与xml互相转换的方法分析

本文实例讲述了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测试数据mon.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测试数据mon.xmap.annotation.xnodelist;

import org.nuxeo测试数据mon.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测试数据mon.xmap.annotation.xnode;

import org.nuxeo测试数据mon.xmap.annotation.xnodelist;

import org.nuxeo测试数据mon.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测试数据mon.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.tuohang.net/t/xml/

希望本文所述对大家java程序设计有所帮助。

原文链接:https://HdhCmsTestcnblogs测试数据/aademeng/articles/6235950.html

查看更多关于Java Bean与xml互相转换的方法分析的详细内容...

  阅读:20次