XML和Java Bean互相转换是一个很有用的功能,因为两者有着前后合作的关系,但解析的过程比较痛苦。下面介绍如何进行XML和Java Bean的互相转换。

10年积累的成都做网站、成都网站制作、成都外贸网站建设经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站制作后付款的网站建设流程,更有天河免费网站建设让你可以放心的选择与我们合作。
最近项目中用到了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互相转换就此实现。
                网站题目:XML和JavaBean的互相转换攻略
                
                标题来源:http://www.csdahua.cn/qtweb/news12/188062.html
            
网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网