Java Bean與xml互相轉(zhuǎ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ì)有所幫助。
- Java反射 JavaBean對(duì)象自動(dòng)生成插入,更新,刪除,查詢sql語句操作
- 通過實(shí)例了解JavaBean開發(fā)及使用過程解析
- 通過實(shí)例解析POJO和JavaBean的區(qū)別
- java Beanutils.copyProperties( )用法詳解
- 簡(jiǎn)單了解JavaBean作用及常用操作
- AndroidStudio插件GsonFormat之Json快速轉(zhuǎn)換JavaBean教程
- java中PO、VO、BO、POJO、DAO、DTO、TO、QO、Bean、conn的理解
- NetBeans安裝提示neatbeans cannot find java 1.8 or higher
- Java中json與javaBean幾種互轉(zhuǎn)的講解
- Java 如何從spring容器中獲取注入的bean對(duì)象
相關(guān)文章
JAVA格式化時(shí)間日期的簡(jiǎn)單實(shí)例
這篇文章主要介紹了JAVA格式化時(shí)間日期的簡(jiǎn)單實(shí)例,有需要的朋友可以參考一下2013-11-11SpringBoot整合RocketMQ實(shí)現(xiàn)消息發(fā)送和接收的詳細(xì)步驟
這篇文章主要介紹了SpringBoot整合RocketMQ實(shí)現(xiàn)消息發(fā)送和接收功能,我們使用主流的SpringBoot框架整合RocketMQ來講解,使用方便快捷,本文分步驟給大家介紹的非常詳細(xì),需要的朋友可以參考下2021-08-08Java使用正則表達(dá)式(regex)匹配中文實(shí)例代碼
本文給大家分享java使用正則表達(dá)式匹配中文的實(shí)例代碼,以及java中要匹配中文的正則表達(dá)式兩種寫法,感興趣的朋友通過本文一起看看吧2016-12-12SpringSecurity+JWT實(shí)現(xiàn)前后端分離的使用詳解
這篇文章主要介紹了SpringSecurity+JWT實(shí)現(xiàn)前后端分離的使用詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01Java實(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-06CentOS?7.9服務(wù)器Java部署環(huán)境配置的過程詳解
這篇文章主要介紹了CentOS?7.9服務(wù)器Java部署環(huán)境配置,主要包括ftp服務(wù)器搭建過程、jdk安裝方法以及mysql安裝過程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-07-07JAVA錯(cuò)誤:'無效目標(biāo)發(fā)行版?17'的解決方案
這篇文章主要給大家介紹了關(guān)于JAVA錯(cuò)誤:'無效目標(biāo)發(fā)行版?17'的解決方案,文中通過圖文介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或使用java具有一的的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2022-09-09