`

java bean与xml相互转换

    博客分类:
  • java
 
阅读更多

最近在做的项目,在各个平台之间需要大量传输数据,且结构比较复杂,同时需要接近完全的配置化。

所以:想着各个系统之间,使用java bean来填充值,然后,转成xml进行传输,在服务器端再进行将xml转换成java bean,来处理的方式。

 

/**
 * xml 与 java bean 相互转换 单元 测试 
 * @author zhaoguoli
 * @version v1.0 2013-2-4 create
 */
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;

import org.junit.Test;
import org.nuxeo.common.xmap.XMap;


public class XmapTest {
	
	@Test
    public void javaToXml(){
        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);
            
   

            System.out.println(xmp.toXML(books));
            
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
	
	
	@Test
	public void xmlToJava() throws Exception{
		XMap xmap = new XMap();
		xmap.register(Books.class);
        InputStream in = new FileInputStream(new File("G:\\ers\\xxt_ers\\WEB-INF\\src\\cn\\xxt\\xmlbean\\books.xml"));
        Object result = xmap.load(in);
        
        System.out.println(result);
		Books books=(Books)result;		
		System.out.println(books);

	}
}

 

 

/**
 * 图书
 * @author zhaoguoli
 * @version v1.0 2013-2-4 create
 */
import java.util.ArrayList;
import java.util.List;

import org.apache.commons.lang.builder.ToStringBuilder;
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;
	}
	
	@Override
	public String toString() {
		return ToStringBuilder.reflectionToString(this);
	}
}

 

/**
 * 图书列表
 * @author zhaoguoli
 * @version v1.0 2013-2-4 create
 */
import java.util.ArrayList;
import java.util.List;

import org.apache.commons.lang.builder.ToStringBuilder;
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);
    }
    
    /* (non-Javadoc)
     * @see java.lang.Object#toString()
     */
    @Override
    public String toString() {
    	// TODO Auto-generated method stub
    	return ToStringBuilder.reflectionToString(this);
    }
}

 

<?xml version="1.0" encoding="UTF-8"?>
<root>
    <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>
</root>

 

分享到:
评论

相关推荐

    S变换+Sockwell R G , Mansinha L , Lowe R P . Localization of the complex spectrum: the S transformJ

    s变换用的高斯窗函数( 高斯窗是指数窗的一种,它也无负的旁瓣,而且没有旁瓣波动,因而不回引起计算谱中假的极大值或极小值,而且高斯窗频率窗函数的主瓣比指数窗的主瓣窄,分辨率比指数窗有所提高。

    2021科大讯飞车辆贷违预测大赛冠军源码+全部资料.zip

    2021科大讯飞车辆贷违预测大赛冠军源码+全部资料.zip [资源说明] 1、该项目是团队成员近期最新开发,代码完整,资料齐全,含设计文档等 2、上传的项目源码经过严格测试,功能完善且能正常运行,请放心下载使用! 3、本项目适合计算机相关专业(人工智能、通信工程、自动化、电子信息、物联网等)的高校学生、教师、科研工作者、行业从业者下载使用,可借鉴学习,也可直接作为毕业设计、课程设计、作业、项目初期立项演示等,也适合小白学习进阶,遇到问题不懂就问,欢迎交流。 4、如果基础还行,可以在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 5、不懂配置和运行,可远程教学 欢迎下载,学习使用!

    AI图像处理工具包-一键抠图、背景切换、旧照片修复、人像漫画化、视频卡通化(Python+OpenCV+Dlib+TensorFlow).zip

    AI图像处理工具包-一键抠图、背景切换、旧照片修复、人像漫画化、视频卡通化(Python+OpenCV+Dlib+TensorFlow).zip [资源说明] 1、该项目是团队成员近期最新开发,代码完整,资料齐全,含设计文档等 2、上传的项目源码经过严格测试,功能完善且能正常运行,请放心下载使用! 3、本项目适合计算机相关专业(人工智能、通信工程、自动化、电子信息、物联网等)的高校学生、教师、科研工作者、行业从业者下载使用,可借鉴学习,也可直接作为毕业设计、课程设计、作业、项目初期立项演示等,也适合小白学习进阶,遇到问题不懂就问,欢迎交流。 4、如果基础还行,可以在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 5、不懂配置和运行,可远程教学 欢迎下载,学习使用!

    基于java+springboot+vue+mysql的远程教育网站设计与实现.docx

    基于java+springboot+vue+mysql的远程教育网站设计与实现.docx

    springboot005学生心理咨询评估系统(源码+数据库+论文+PPT+包调试+一对一指导)

    毕业设计资料,计算机毕业设计,源码,毕业论文,毕业答辩,答辩PPT,Java毕业设计,php毕业设计,ASP.NET毕业设计,毕业指导,计算机作业,php作业,java作业,ASP.NET作业,编程作业,管理系统,网站,app,毕业设计学习,Java学习,php学习,ASP.NET学习,java课程,php课程,ASP.NET课程,答辩技巧,SQLSERVER数据库,Mysql数据库,jdbc,SSM框架,SpringBoot框架,Html5,小程序

    蓝牙串口助手,可以连接HC-05等蓝牙模块,实现单片机设备与手机通讯,安卓手机,蓝牙调试助手,具有按键功能!

    蓝牙串口助手,可以连接HC-05等蓝牙模块,实现单片机设备与手机通讯,安卓手机,蓝牙调试助手,具有按键功能!

    TriLib-2-Model-Loading-Package-2.3.7.unitypackage

    TriLib 2 是一个跨平台的运行时 3D 模型导入器

    “人力资源+大数据+薪酬报告+涨薪调薪”

    人力资源+大数据+薪酬报告+涨薪调薪,在学习、工作生活中,越来越多的事务都会使用到报告,通常情况下,报告的内容含量大、篇幅较长。那么什么样的薪酬报告才是有效的呢?以下是小编精心整理的调薪申请报告,欢迎大家分享。相信老板看到这样的报告,一定会考虑涨薪的哦。

Global site tag (gtag.js) - Google Analytics