本文实例讲述了Java Bean与 互相转换的方法。分享给大家供大家参考,具体如下:

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

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

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

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

答案是OK的

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

写个小例子

<?  version=\"1.0\" encoding=\"UTF-8\"?>
<books>
<book no=\"1\">
< >java是傻逼</ >
<subject>java</subject>
<subject> </subject>
<price>10</price>
</book>
<book no=\"2\">
< >c++程序设计</ >
<subject>C++</subject>
<subject>c</subject>
<price>10</price>
</book>
</books>

Books类

import java.util.ArrayList;
import java.util.List;
import org.nuxeo.common.xmap.annotation.XNodeList;
import org.nuxeo.common.xmap.annotation.X ;
@X (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类

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.X ;
@X 
public class Book {
  @XNode(\" \")
  private String   ;
  @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 get () {
    return  ;
  }
  public void set (String  ) {
    this.  =  ;
  }
  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;
  }
}

测试类:

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(\" \");
      //设置书节点的属性
      book.setPrice(10);
      book.set (\"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.set (\"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.as String(books, \"UTF-8\", filters, true));
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}

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

解析

xmap.register(Books.class);
      URL url = new File(\"book. \").toURL();
      InputStream in = new FileInputStream(new File(\"book. \"));
       [] result = ( []) xmap.loadAll(in);
Books books=(Books)result[0];

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

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

PS:这里再为大家推荐几款相关在线工具供大家参考:

在线JSON转Java Bean代码工具:
http://tools.jb51.net/code/json2javabean

在线 /JSON互相转换工具:
http://tools.jb51.net/code/ json

在线压缩/格式化工具:
http://tools.jb51.net/code/ _format_compress

更多关于java算法相关内容感兴趣的读者可查看本站专题:《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总

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

收藏 打印