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

 更新时间:2018年12月18日 12:06:24   作者:天涯海角路  
这篇文章主要介绍了Java Bean与xml互相转换的方法,结合实例形式分析了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.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算法相关内容感兴趣的读者可查看本站专题:《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总

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

相关文章

  • JAVA格式化时间日期的简单实例

    JAVA格式化时间日期的简单实例

    这篇文章主要介绍了JAVA格式化时间日期的简单实例,有需要的朋友可以参考一下
    2013-11-11
  • SpringBoot整合RocketMQ实现消息发送和接收的详细步骤

    SpringBoot整合RocketMQ实现消息发送和接收的详细步骤

    这篇文章主要介绍了SpringBoot整合RocketMQ实现消息发送和接收功能,我们使用主流的SpringBoot框架整合RocketMQ来讲解,使用方便快捷,本文分步骤给大家介绍的非常详细,需要的朋友可以参考下
    2021-08-08
  • Java使用正则表达式(regex)匹配中文实例代码

    Java使用正则表达式(regex)匹配中文实例代码

    本文给大家分享java使用正则表达式匹配中文的实例代码,以及java中要匹配中文的正则表达式两种写法,感兴趣的朋友通过本文一起看看吧
    2016-12-12
  • SpringSecurity+JWT实现前后端分离的使用详解

    SpringSecurity+JWT实现前后端分离的使用详解

    这篇文章主要介绍了SpringSecurity+JWT实现前后端分离的使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • Java实现获取控制台输出结果转换为变量的详细操作

    Java实现获取控制台输出结果转换为变量的详细操作

    在Java编程中,有时需将控制台的输出捕获为字符串,以便于后续的处理或测试,这种需求在日志记录、单元测试或调试时尤为常见,下面,将通过详细步骤来介绍如何使用ByteArrayOutputStream和PrintStream来实现这一功能,需要的朋友可以参考下
    2024-06-06
  • Spring Aop基本流程原理示例详解

    Spring Aop基本流程原理示例详解

    这篇文章主要给大家介绍了关于Spring Aop基本流程原理的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • CentOS 7.9服务器Java部署环境配置的过程详解

    CentOS 7.9服务器Java部署环境配置的过程详解

    这篇文章主要介绍了CentOS 7.9服务器Java部署环境配置,主要包括ftp服务器搭建过程、jdk安装方法以及mysql安装过程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-07-07
  • 深入了解Java设计模式之策略模式

    深入了解Java设计模式之策略模式

    策略模式属于Java-设计模式中行为模式之一,该模式定义了一系列算法,并将每个算法封装起来,使它们可以相互替换。本文将通过示例详细讲解这一模式,需要的可以参考一下
    2022-09-09
  • JAVA错误:'无效目标发行版 17'的解决方案

    JAVA错误:'无效目标发行版 17'的解决方案

    这篇文章主要给大家介绍了关于JAVA错误:'无效目标发行版 17'的解决方案,文中通过图文介绍的非常详细,对大家学习或使用java具有一的的参考学习价值,需要的朋友可以参考下
    2022-09-09
  • java同步锁的正确使用方法(必看篇)

    java同步锁的正确使用方法(必看篇)

    下面小编就为大家带来一篇java同步锁的正确使用方法(必看篇)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-08-08

最新评论