java xmap_xml和java Bean的直接转换,Xmap
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相关推荐
- java xmap_XML和Java Bean的互相转换攻略 【XMAP】
XML和Java Bean的互相转换攻略 XML和Java Bean互相转换是一个很有用的功能,因为两者有着前后合作的关系,但解析的过程比较痛苦.下面介绍如何进行XML和Java Bean的互相转换 ...
- java bean与xml转换_Java Bean与xml互相转换的方法分析
本文实例讲述了Java Bean与xml互相转换的方法.分享给大家供大家参考,具体如下: XML和Java Bean互相转换是一个很有用的功能,因为两者有着前后合作的关系,但解析的过程比较痛苦.下面介 ...
- 二、java项目常用工具类之beancopy,bean和map转换工具类
项目环境: jdk1.8+spring4.3.12 一.问题描述及试用场景: 在项目规范中,要求类名以DO为尾的类作为数据库层实体bean,类名以MO为尾的类作为系统传输层实体bean,类名以VO为尾 ...
- 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:// ...
- java中各进制之间的转换(十进制转十六进制、十进制转二进制、二进制转十进制、二进制转十六进制)...
在java编辑中有没有遇到经常需要进行java中各进制之间的转换(十进制转十六进制.十进制转二进制.二进制转十进制.二进制转十六进制)的事情呢?下面我们就来分析一下各自是怎么转换的: [java] / ...
- android镊 姩瀹夎 apk,用java写的jodconverter借用openoffice来转换office成pdf的示例代码...
下载安装java sdk7安装完成即可.不用设置环境 安装openoffice到d:/program files/open....目录中 创建目录 g:/sys/qidizi/desktop/java ...
- java集合——集合与数组间的转换+算法
[0]README 0.1) 本文描述转自 core java volume 1, 源代码为原创,旨在理解 java集合--集合与数组间的转换+算法 的相关知识: 0.2) for full sour ...
- java jax-rs_在Java EE 7和WildFly中使用Bean验证来验证JAX-RS资源数据
java jax-rs 我过去已经两次接触过这个主题. 首先,在我的文章< 在Java EE 6中将Bean验证与JAX-RS集成>中 ,描述了甚至在Java EE平台规范中尚未定义之前, ...
- Java EE状态会话Bean(EJB)示例
在本文中,我们将了解如何在简单的Web应用程序中使用状态会话Bean来跟踪客户端会话中的状态. 1.简介 有状态会话Bean通常保存有关特定客户端会话的信息,并在整个会话中保留该信息(与无状态会话Be ...
最新文章
- OpenCV中的内存泄露问题(cvLoadImage,cvCloneImage)
- java重要基础知识点_必看 | 新人必看的Java基础知识点大梳理
- android简单分享----文字加图片
- 给Java初学者福利——Java语法基础
- ACM入门之【组合数】
- Python 错误和异常
- keras从入门到放弃(十五)图片数据增强
- 数据结构Java04【树结构概述、创建、遍历、查找节点、删除节点】
- 解决C++代码单元测试中的难题-不可验证和IO调用
- 征稿 | 软件学报专刊征文:知识赋能的信息系统
- Linux上构建一个RADIUS服务器详解
- 英语总结系列(二十一):英语也能玩出新花样
- 2021-07-31mysql 登录退出
- Thinkpad T400 解决PCI 内存控制器设备黄色感叹号问题
- java毕业设计网上租贸系统mybatis+源码+调试部署+系统+数据库+lw
- Learning Community Embedding with Community Detection and Node Embedding on Graphs
- 如何用HTML和css实现拼图,怎样使用DIV+CSS实现拼图
- 建议收藏!!! 若依框架文档开发手册[持续更新]
- 谈谈我对零售云在云原生总结与思考
- 户外直播、移动直播遇到弱网信号差,如何保证流畅又高清画面传输?