Java Bean与xml互相转换的方法分析
程序员文章站
2024-03-02 17:31:10
本文实例讲述了java bean与xml互相转换的方法。分享给大家供大家参考,具体如下:
xml和java bean互相转换是一个很有用的功能,因为两者有着前后合作的关系...
本文实例讲述了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代码工具:
在线xml/json互相转换工具:
xml在线压缩/格式化工具:
更多关于java算法相关内容感兴趣的读者可查看本站专题:《java数据结构与算法教程》、《java操作dom节点技巧总结》、《java文件与目录操作技巧汇总》和《java缓存操作技巧汇总》
希望本文所述对大家java程序设计有所帮助。
上一篇: Android开发教程之初识Android App
下一篇: 对Java中传值调用的理解分析