1、XStream,XStream是codehaus上的一个开源项目,用于将Javabean serialize为xml格式,以及从xml中生成javabean。

2、castor、xmlbeans,castor和xmlbeans这种都是先定义schema,然后根据schema来generate java class,然后调用marshall和unmarshall方法来序列化javabean。这是属于重量级的方法,虽然功能强大,使用却不方便。如果你改了schema,势必要重新generate,这样你就不能在generate的java class上加上自己的方法。导致生成的java class纯粹用于serialize。

3、 commons的betwikt也具有类似的功能,但好像需要配置rule,显得还是稍微麻烦些。

xMap具体实现:

package test;

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;

/**

* Book 实体对象,此处用XMap注解

* @author Administrator

*

*/

@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 subjects;

@XNode("price")

private int   price;

public String getTitle() {

return title;

}

public void setTitle(String title) {

this.title = title;

}

public List getSubjects() {

return subjects;

}

public void setSubjects(List 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;

}

}

/**==================================================**/

package test;

import java.util.ArrayList;

import java.util.List;

import org.nuxeo.common.xmap.annotation.XNodeList;

import org.nuxeo.common.xmap.annotation.XObject;

/**

* 图书对象集合类

* @author zhouyu

*

*/

@XObject(value = "books")

public class Books {

@XNodeList(value = "book", type = ArrayList.class, componentType = Book.class)

private List book;

public List getBook() {

return book;

}

public void setBook(List book) {

this.book = book;

}

public void addBook(Book b){

if(book==null){

book=new ArrayList();

}

book.add(b);

}

}

/**==================================================**/

package test;

import java.util.ArrayList;

import java.util.List;

import org.nuxeo.common.xmap.XMap;

import com.io.IoUtils;

/**

* 从对象到xml转换

* @author zhouyu

*

*/

public class ObjectToXmlDemo {

public static void main(String[] args) {

try {

//声明一组书的根节点

Books books=new Books();

//声明一本书

Book book=new Book();

//书的类型

List sj = new ArrayList();

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 sj2=new ArrayList();

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 filters = new ArrayList();

String content = xmp.asXmlString(books, "UTF-8", filters, true);

IoUtils.WriteFile(content, "UTF-8", "books.xml");

} catch (Exception e) {

e.printStackTrace();

}

}

}

/**==================================================**/

package test;

import java.io.File;

import java.io.FileInputStream;

import java.io.InputStream;

import java.net.URL;

import org.nuxeo.common.xmap.XMap;

public class XmlToObjectDemo {

public static void main(String[] args) {

try {

XMap xmp = new XMap();

xmp.register(Books.class);

//URL url = new File("books.xml").toURL();

InputStream in = new FileInputStream(new File("books.xml"));

Object[] result = (Object[]) xmp.loadAll(in);

Books books = (Books) result[0];

for(int i = 0 ; i < books.getBook().size() ; i++)

{

Book book = books.getBook().get(i);

System.out.println(book.getNo());

System.out.println(book.getPrice());

System.out.println(book.getTitle());

System.out.println(book.getSubjects().get(i));

}

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

/**==================================================**/

java是傻逼

java

xml

10

c++程序设计

C++

c

10

java xmap_xml和java Bean的直接转换,Xmap相关推荐

  1. java xmap_XML和Java Bean的互相转换攻略 【XMAP】

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

  2. java bean与xml转换_Java Bean与xml互相转换的方法分析

    本文实例讲述了Java Bean与xml互相转换的方法.分享给大家供大家参考,具体如下: XML和Java Bean互相转换是一个很有用的功能,因为两者有着前后合作的关系,但解析的过程比较痛苦.下面介 ...

  3. 二、java项目常用工具类之beancopy,bean和map转换工具类

    项目环境: jdk1.8+spring4.3.12 一.问题描述及试用场景: 在项目规范中,要求类名以DO为尾的类作为数据库层实体bean,类名以MO为尾的类作为系统传输层实体bean,类名以VO为尾 ...

  4. json:JSONObject包的具体使用(JSONObject-lib包是一个beans,collections,maps,java arrays和xml和JSON互相转换的包)...

    1.JSONObject介绍 JSONObject-lib包是一个beans,collections,maps,java arrays和xml和JSON互相转换的包. 2.下载jar包 http:// ...

  5. java中各进制之间的转换(十进制转十六进制、十进制转二进制、二进制转十进制、二进制转十六进制)...

    在java编辑中有没有遇到经常需要进行java中各进制之间的转换(十进制转十六进制.十进制转二进制.二进制转十进制.二进制转十六进制)的事情呢?下面我们就来分析一下各自是怎么转换的: [java] / ...

  6. android镊 姩瀹夎 apk,用java写的jodconverter借用openoffice来转换office成pdf的示例代码...

    下载安装java sdk7安装完成即可.不用设置环境 安装openoffice到d:/program files/open....目录中 创建目录 g:/sys/qidizi/desktop/java ...

  7. java集合——集合与数组间的转换+算法

    [0]README 0.1) 本文描述转自 core java volume 1, 源代码为原创,旨在理解 java集合--集合与数组间的转换+算法 的相关知识: 0.2) for full sour ...

  8. java jax-rs_在Java EE 7和WildFly中使用Bean验证来验证JAX-RS资源数据

    java jax-rs 我过去已经两次接触过这个主题. 首先,在我的文章< 在Java EE 6中将Bean验证与JAX-RS集成>中 ,描述了甚至在Java EE平台规范中尚未定义之前, ...

  9. Java EE状态会话Bean(EJB)示例

    在本文中,我们将了解如何在简单的Web应用程序中使用状态会话Bean来跟踪客户端会话中的状态. 1.简介 有状态会话Bean通常保存有关特定客户端会话的信息,并在整个会话中保留该信息(与无状态会话Be ...

最新文章

  1. OpenCV中的内存泄露问题(cvLoadImage,cvCloneImage)
  2. java重要基础知识点_必看 | 新人必看的Java基础知识点大梳理
  3. android简单分享----文字加图片
  4. 给Java初学者福利——Java语法基础
  5. ACM入门之【组合数】
  6. Python 错误和异常
  7. keras从入门到放弃(十五)图片数据增强
  8. 数据结构Java04【树结构概述、创建、遍历、查找节点、删除节点】
  9. 解决C++代码单元测试中的难题-不可验证和IO调用
  10. 征稿 | 软件学报专刊征文:知识赋能的信息系统
  11. Linux上构建一个RADIUS服务器详解
  12. 英语总结系列(二十一):英语也能玩出新花样
  13. 2021-07-31mysql 登录退出
  14. Thinkpad T400 解决PCI 内存控制器设备黄色感叹号问题
  15. java毕业设计网上租贸系统mybatis+源码+调试部署+系统+数据库+lw
  16. Learning Community Embedding with Community Detection and Node Embedding on Graphs
  17. 如何用HTML和css实现拼图,怎样使用DIV+CSS实现拼图
  18. 建议收藏!!! 若依框架文档开发手册[持续更新]
  19. 谈谈我对零售云在云原生总结与思考
  20. 户外直播、移动直播遇到弱网信号差,如何保证流畅又高清画面传输?

热门文章

  1. 证券考试和基金考试有什么区别?
  2. 马库斯批判Hinton、吴恩达、LeCun等煽风点火!炒作将带来AI寒冬
  3. 逻辑斯蒂分布模型、二项逻辑斯蒂回归模型、多项逻辑斯蒂回归模型
  4. Google云计算的基础架构
  5. 你还在抱怨职场的不公吗?
  6. 【开源项目】之健康助手
  7. 入门交互设计的4个步骤
  8. [Abandoned connection cleanup thread] but has failed to stop it.
  9. 51 汇编语言编程:8个按键控制8个LED
  10. 7-12 打印倒直角三角形图案