欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java Bean與xml互相轉(zhuǎn)換的方法分析

 更新時(shí)間:2018年12月18日 12:06:24   作者:天涯海角路  
這篇文章主要介紹了Java Bean與xml互相轉(zhuǎn)換的方法,結(jié)合實(shí)例形式分析了java bean與xml轉(zhuǎn)換的原理與相關(guān)操作技巧,需要的朋友可以參考下

本文實(shí)例講述了Java Bean與xml互相轉(zhuǎn)換的方法。分享給大家供大家參考,具體如下:

XML和Java Bean互相轉(zhuǎn)換是一個(gè)很有用的功能,因?yàn)閮烧哂兄昂蠛献鞯年P(guān)系,但解析的過程比較痛苦。下面介紹如何進(jìn)行XML和Java Bean的互相轉(zhuǎn)換。

最近項(xiàng)目中用到了xml和java bean的轉(zhuǎn)換

用到xml的時(shí)候我們需要遍歷解析。。。然后將解析的值放入聲明好的java bean,過程很痛苦,結(jié)果很美好

我們能不能直接從xml轉(zhuǎn)化到j(luò)ava bean呢,或者直接成java bean轉(zhuǎn)化到xml呢?

答案是OK的

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

寫個(gè)小例子

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++程序設(shè)計(jì)</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;
  }
}

測(cè)試類:

import java.util.ArrayList;
import java.util.List;
import org.nuxeo.common.xmap.XMap;
public class XmapTest {
  public static void main(String[] args) {
    try {
      //聲明一組書的根節(jié)點(diǎn)
      Books books=new Books();
      //聲明一本書
      Book book=new Book();
      //書的類型
      List< String> sj=new ArrayList< String>();
      sj.add("java");
      sj.add("xml");
      //設(shè)置書節(jié)點(diǎn)的屬性
      book.setPrice(10);
      book.setTitle("java是傻逼");
      book.setSubjects(sj);
      book.setNo("1");
      //將書節(jié)點(diǎn)添加到跟節(jié)點(diǎn)
      books.addBook(book);
     //聲明一本書
      Book book2=new Book();
      //書的類型
      List< String> sj2=new ArrayList< String>();
      sj2.add("C++");
      sj2.add("c");
      //設(shè)置書節(jié)點(diǎn)的屬性
      book2.setPrice(10);
      book2.setTitle("c++程序設(shè)計(jì)");
      book2.setSubjects(sj2);
      book2.setNo("2");
      //將書節(jié)點(diǎn)添加到跟節(jié)點(diǎn)
      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();
    }
  }
}

運(yùn)行上面這個(gè)類就可以生成開頭所看見的那個(gè)XML的內(nèi)容

解析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];

數(shù)據(jù)就完全autowire by name進(jìn)入到了bean,某些情況下很好用(xml很整齊,每個(gè)節(jié)點(diǎn)的內(nèi)容都一樣,固定)

XML和Java Bean互相轉(zhuǎn)換就此實(shí)現(xiàn)。

PS:這里再為大家推薦幾款相關(guān)在線工具供大家參考:

在線JSON轉(zhuǎn)Java Bean代碼工具:
http://tools.jb51.net/code/json2javabean

在線XML/JSON互相轉(zhuǎn)換工具:
http://tools.jb51.net/code/xmljson

XML在線壓縮/格式化工具:
http://tools.jb51.net/code/xml_format_compress

更多關(guān)于java算法相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Java操作DOM節(jié)點(diǎn)技巧總結(jié)》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總

希望本文所述對(duì)大家java程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • JAVA格式化時(shí)間日期的簡(jiǎn)單實(shí)例

    JAVA格式化時(shí)間日期的簡(jiǎn)單實(shí)例

    這篇文章主要介紹了JAVA格式化時(shí)間日期的簡(jiǎn)單實(shí)例,有需要的朋友可以參考一下
    2013-11-11
  • SpringBoot整合RocketMQ實(shí)現(xiàn)消息發(fā)送和接收的詳細(xì)步驟

    SpringBoot整合RocketMQ實(shí)現(xiàn)消息發(fā)送和接收的詳細(xì)步驟

    這篇文章主要介紹了SpringBoot整合RocketMQ實(shí)現(xiàn)消息發(fā)送和接收功能,我們使用主流的SpringBoot框架整合RocketMQ來講解,使用方便快捷,本文分步驟給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2021-08-08
  • Java使用正則表達(dá)式(regex)匹配中文實(shí)例代碼

    Java使用正則表達(dá)式(regex)匹配中文實(shí)例代碼

    本文給大家分享java使用正則表達(dá)式匹配中文的實(shí)例代碼,以及java中要匹配中文的正則表達(dá)式兩種寫法,感興趣的朋友通過本文一起看看吧
    2016-12-12
  • SpringSecurity+JWT實(shí)現(xiàn)前后端分離的使用詳解

    SpringSecurity+JWT實(shí)現(xiàn)前后端分離的使用詳解

    這篇文章主要介紹了SpringSecurity+JWT實(shí)現(xiàn)前后端分離的使用詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • Java實(shí)現(xiàn)獲取控制臺(tái)輸出結(jié)果轉(zhuǎn)換為變量的詳細(xì)操作

    Java實(shí)現(xiàn)獲取控制臺(tái)輸出結(jié)果轉(zhuǎn)換為變量的詳細(xì)操作

    在Java編程中,有時(shí)需將控制臺(tái)的輸出捕獲為字符串,以便于后續(xù)的處理或測(cè)試,這種需求在日志記錄、單元測(cè)試或調(diào)試時(shí)尤為常見,下面,將通過詳細(xì)步驟來介紹如何使用ByteArrayOutputStream和PrintStream來實(shí)現(xiàn)這一功能,需要的朋友可以參考下
    2024-06-06
  • Spring Aop基本流程原理示例詳解

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

    這篇文章主要給大家介紹了關(guān)于Spring Aop基本流程原理的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • CentOS?7.9服務(wù)器Java部署環(huán)境配置的過程詳解

    CentOS?7.9服務(wù)器Java部署環(huán)境配置的過程詳解

    這篇文章主要介紹了CentOS?7.9服務(wù)器Java部署環(huán)境配置,主要包括ftp服務(wù)器搭建過程、jdk安裝方法以及mysql安裝過程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-07-07
  • 深入了解Java設(shè)計(jì)模式之策略模式

    深入了解Java設(shè)計(jì)模式之策略模式

    策略模式屬于Java-設(shè)計(jì)模式中行為模式之一,該模式定義了一系列算法,并將每個(gè)算法封裝起來,使它們可以相互替換。本文將通過示例詳細(xì)講解這一模式,需要的可以參考一下
    2022-09-09
  • JAVA錯(cuò)誤:'無效目標(biāo)發(fā)行版?17'的解決方案

    JAVA錯(cuò)誤:'無效目標(biāo)發(fā)行版?17'的解決方案

    這篇文章主要給大家介紹了關(guān)于JAVA錯(cuò)誤:'無效目標(biāo)發(fā)行版?17'的解決方案,文中通過圖文介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或使用java具有一的的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2022-09-09
  • java同步鎖的正確使用方法(必看篇)

    java同步鎖的正確使用方法(必看篇)

    下面小編就為大家?guī)硪黄猨ava同步鎖的正確使用方法(必看篇)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-08-08

最新評(píng)論