导航:首页 > 编程语言 > xstream转java

xstream转java

发布时间:2023-01-03 08:51:32

Ⅰ 用XStream 转换java对象成xml的一个疑问

Ⅱ xstream xml转化成java对象

xml to java对象:
static MessageDatabase load(String persistFile) {
MessageDatabase messageDatabase = null;
Reader reader = null;

try {
reader = new FileReader(persistFile);
XStream xstream = new XStream(new JDomDriver());
messageDatabase = (MessageDatabase) xstream.fromXML(reader);

// for upgrade
if (messageDatabase != null) {
messageDatabase.upgrade();
}
}
catch (FileNotFoundException ex) {
;
}
finally {
if (reader != null) {
try {
reader.close();
}
catch (IOException ex) {
log.warn("Exception when closing reader", ex);
}
}
}

if (messageDatabase == null) {
messageDatabase = new MessageDatabase();
messageDatabase.setMessages(new LinkedList());
messageDatabase.setStickyMessages(new LinkedList());
}

messageDatabase.persistFile = persistFile;

return messageDatabase;
}

Ⅲ 我现在使用xstream反序列化,把XML转换为java对象

多余的字段如果是单个的话。你可以把它作为一个属性啦?
然后<filed>作为一个集合..
addImplicitCollection(Class ownerType, String fieldName),去掉集合类型生成xml的父节点。

Ⅳ java用XStream把xml转换成javabean的问题

xStream可以轻易的将Java对象和xml文档相互转换,而且可以修改某个特定的属性和节点名称,而且也支持json的转换;它们都完美支持JSON,但是对xml的支持还不是很好。一定程度上限制了对Java对象的描述,不能让xml完全体现到对Java对象的描述。这里将会介绍xStream对JSON、XML的完美支持。xStream不仅对XML的转换非常友好,而且提供annotation注解,可以在JavaBean中完成对xml节点、属性的描述。以及对JSON也支持,只需要提供相关的JSONDriver就可以完成转换。

Ⅳ 如何创建xstream的注解工厂类,将xml转换成java对象

本文记录一下使用xstream这个api的注解特性对Java对象与XML字符串相互转换的一些代码示例。
我们很多人都处理过XML文件,也有很多非常成熟的第三方开源软件。如:jdom、dom4j等。虽然他们的功能非常强大,但在使用上还是有点不那么习惯。对于格式比较固定的XML文档,它的结构没有变化或是很少变化,这时将它转换成我们熟悉的Java对象来操作的话,会使工作变得更容易一些,而xstream正好可以满足这一点。
本文所用xstream的版本为:1.4.7

<dependency>
<groupId>com.thoughtworks.xstream</groupId>
<artifactId>xstream</artifactId>
<version>1.4.7</version>
</dependency>
还是以之前的book XML为例,先上代码。

import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;

@XStreamAlias("book")
public class Book {

// 别名注解,这个别名就是XML文档中的元素名,Java的属性名不一定要与别名一致
@XStreamAlias("name")
private String name;

@XStreamAlias("author")
private String author;

// 属性注解,此price就是book的属性,在XML中显示为:<book price="108">
@XStreamAsAttribute()
@XStreamAlias("price")
private String price;

省略get和set方法
}

import java.util.List;

import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamImplicit;

@XStreamAlias("books")
public class Books {

// 隐式集合,加上这个注解可以去掉book集合最外面的<list></list>这样的标记
@XStreamImplicit
private List<Book> list;

省略get和set方法
}

Ⅵ xstream xml转化成java对象

注意事项:

  1. 创建接收转换的实体类 里面字段 与 xml节点一一对应。spring 使用@XStreamAlias("节点") 进行关联。属性名与节点一一对应是很重要的!!!不然 不能正常转换。使用了注解以后,xml节点跟类的属性名不再有关系,但是 注解里面使用的名字就默认是与xml节点对应的。所以保持@XStreamAlias("节点") 里面节点的值与xml 一一对应。

  2. xstream.processAnnotations(需要转化的实体类.class);


实体类 例子:


package com.cmsz.cmup.alipay.model.responses;


import java.util.List;


import com.thoughtworks.xstream.annotations.XStreamAlias;

import com.thoughtworks.xstream.annotations.XStreamAsAttribute;

import com.thoughtworks.xstream.annotations.XStreamConverter;

import com.thoughtworks.xstream.annotations.XStreamImplicit;

import com.thoughtworks.xstream.converters.extended.ToAttributedValueConverter;


/**

* @Title: AccountResultVO.java

* @Package com.cmsz.cmup.alipay.vo.result

* @Description: alipay返回xml字符串封装对象

* @author yekun

* @date 2015年12月4日 上午10:50:23

*/

@XStreamAlias("alipay")

public class AccountResponseModel {


/** 错误信息 */

@XStreamAlias("error")

private String error;


/** 请求是否成功 */

@XStreamAlias("is_success")

private String isSuccess;

/** 请求参数 */

@XStreamAlias("request")

private Request request;


/** xml节点 */

@XStreamAlias("response")

private Response response;


/** 签名 */

@XStreamAlias("sign")

private String sign;


/** 签名加密方式 */

@XStreamAlias("sign_type")

private String sign_type;



//转换代码

XStream xstream = new XStream(new DomDriver());

xstream.processAnnotations(实体类.class);

xstream.fromXML(xmlStr);//xml格式的字符串

Ⅶ xtream的工具使用

Xstream

需要的jar包

xpp3_min-1.1.4c.jar

xstream-1.3.1.jar

作用:

将xml字符串转换为java对象,或者将java对象转换为xml字符串

核心类:XStream xs = new XStream();

准备工作,先创建两个java类:City和Province

@XStreamAlias("city")

public class City {

private String name;

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

}

@XStreamAlias("province")

public class Province {

@XStreamAsAttribute()

private String name;

@XStreamImplicit(itemFieldName = "city")

private List citys;

public List getCitys() {

return citys;

}

public void setCitys(List citys) {

this.citys = citys;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

}

第一:将java类转换为xml字符串

XStream xs = new XStream();

String xml = xs.toXML(JavaBean);

打印的字符串会将类的包名作为xml的标签,以及里面的字段都会变成标签。

例如将City类变为xml字符串:

武汉

将Province变成xml字符串

湖北

武汉

所以为了能将打印的字符串变为我们所想要的格式,可以使用Xstream提供的注解进行格式化输出

提供便捷注解

@XStreamAlias(别名) 对类和变量设置别名

@XStreamAsAttribute  设置变量生成属性

@XStreamOmitField  设置变量 不生成到XML

@XStreamImplicit(itemFieldName = “hobbies”) 设置集合类型变量 别名

使注解生效

xStream.autodetectAnnotations(true);

第二:将xml字符串变为java对象

Object xs.fromXML(InputStream input);  //将一个下买了指定的流变为java对象

Object xs.fromXML(String xml)  //将xml字符串变为java对象

Object xs.fromXML(InputStream input,Object root)  ?

Object xs.fromXML(String xml,Object root)  ?

注意:转换的xml文档必须与Java对象  的格式对应

例如:将下面xml字符串转换为Java对象

武汉

则进行转换时候:

XStream xs = new XStream();

Object o = xs.fromXML(in);

若对应的java格式一定是:

包名为:com.domain

类名为:City

里面有一个成员属性:name  提供setter/getter方法

若不是则可以使用别名:

a.为类设置别名

xs.alias("city", City.class);

b.为属性添加别名

xstream.useAttributeFor(Blog.class,"author");

能不能通过注解将 xml转换为制定的java对象  ?

能,手动用方法添加别名

   

Ⅷ 用XStream进行xml转java对象的问题

XStream xStream = new XStream();
xStream.aliasType("LoginRsp", LoginRsp.class);

Object o = xStream.fromXML(ClassLoader.getSystemResourceAsStream("xxx.xml"));
System.out.println(o);

Ⅸ xStream转换xml同名节点到java对象问题

假设XML文件(config/0_student.xml)内容如下:

<students>
<student>
<name>zhang3</name>
<age>20</age>
</student>
<student>
<name>li4</name>
<age>21</age>
</student>
</students>


XStream转换代码如下:

{

publicvoidtestToObject()throwsException{
XStreamxstream=newXStream(newDomDriver());
Filefile=newFile(XStreamUtil.class.getClassLoader().getResource("").getPath(),"config/0_student.xml");
xstream.alias("students",List.class);
xstream.alias("student",Student.class);
List<Student>students=(List<Student>)xstream.fromXML(newFileInputStream(file));

assertEquals(2,students.size());
assertEquals("zhang3",students.get(0).getName());
assertEquals("li4",students.get(1).getName());
assertEquals(20,students.get(0).getAge());
assertEquals(21,students.get(1).getAge());
}
}
阅读全文

与xstream转java相关的资料

热点内容
dvd光盘存储汉子算法 浏览:757
苹果邮件无法连接服务器地址 浏览:962
phpffmpeg转码 浏览:671
长沙好玩的解压项目 浏览:142
专属学情分析报告是什么app 浏览:564
php工程部署 浏览:833
android全屏透明 浏览:732
阿里云服务器已开通怎么办 浏览:803
光遇为什么登录时服务器已满 浏览:302
PDF分析 浏览:484
h3c光纤全工半全工设置命令 浏览:141
公司法pdf下载 浏览:381
linuxmarkdown 浏览:350
华为手机怎么多选文件夹 浏览:683
如何取消命令方块指令 浏览:349
风翼app为什么进不去了 浏览:778
im4java压缩图片 浏览:362
数据查询网站源码 浏览:150
伊克塞尔文档怎么进行加密 浏览:890
app转账是什么 浏览:163