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

作者:天涯海角路 时间:2021-08-12 13:34:00 

本文实例讲述了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


<?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类


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类


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;
 }
}

测试类:


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


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:这里再为大家推荐几款相关在线工具供大家参考:

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

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

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

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

来源:https://www.cnblogs.com/aademeng/articles/6235950.html

标签:Java,Bean,xml
0
投稿

猜你喜欢

  • Android编程实现WebView添加进度条的方法

    2023-07-06 03:16:46
  • java8 集合 多字段 分组 统计个数代码

    2022-12-07 21:03:34
  • Java Swing实现扫雷源码

    2023-11-10 08:16:20
  • Mybatis如何配置连接池

    2021-10-22 03:06:47
  • java实现构造无限层级树形菜单

    2021-11-11 05:46:22
  • IDEA搭建dubbo项目的过程及存在的问题

    2023-10-15 17:56:53
  • 使用IDEA将Java/Kotliin工程导出Jar包的正确姿势

    2022-10-18 17:39:34
  • 基于Java实现Json文件转换为Excel文件

    2022-08-04 23:53:15
  • Java并发编程学习之Unsafe类与LockSupport类源码详析

    2022-10-21 19:07:01
  • 基于ReentrantLock的实现原理讲解

    2023-11-23 22:43:23
  • C#中Span相关的性能优化建议

    2021-07-05 15:42:26
  • Java Web程序实现返回JSON字符串的方法总结

    2023-07-28 22:46:48
  • 引入SpringCloud-gateway报错的解决方案

    2022-04-02 21:47:17
  • 以Java Web项目为例浅谈前后端分离开发模式

    2023-02-14 23:00:42
  • 如何解决Spring in action @valid验证不生效的问题

    2023-08-29 07:59:56
  • Flutter控制组件显示和隐藏三种方式详解

    2023-07-07 03:03:30
  • Java8内存模型PermGen Metaspace实例解析

    2023-11-25 10:53:36
  • SpringBoot返回Json对象报错(返回对象为空{})

    2022-06-30 03:31:19
  • Java实现级联下拉结构的示例代码

    2023-11-03 18:22:06
  • mybatis-plus乐观锁实现方式详解

    2022-09-27 16:12:27
  • asp之家 软件编程 m.aspxhome.com