package com.metarnet.collect.senddata;
import java.beans.XMLDecoder;
import java.beans.XMLEncoder;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;
/**
* <title>使用XML文件存取可序列化的对象的类</title> <description>提供保存和读取的方法</description>
*
* @author 殷晋 <copyright>清华大学汽车工程开发研究院@2005</copyright>
* @author 王豪杰
* @version 1.0 2005-8-5 16:44:49
*/
public class ObjectToXMLUtil {
/**
* 把java的可序列化的对象(实现Serializable接口)转化成XML字符串,如果想一次保存多个可序列化对象请用集合进行封装
*
* @param obj
* 要序列化的可序列化的对象
* @return 转化好的XML格式字符串
*/
public static String objectXmlEncoder(Object obj) {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
// 创建XML文件对象输出类实例
XMLEncoder encoder = new XMLEncoder(baos);
// 对象序列化输出到XML文件
encoder.writeObject(obj);
encoder.flush();
encoder.close();
// 关闭序列化工具
try {
//关闭流
baos.close();
//因为我的应用需要经过web传输,所以要对特殊字符做下处理
return java.net.URLEncoder.encode(baos.toString("UTF-8"), "UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
/**
* 将objStr中的XML格式字符串转换成对象列表(必须存在要转化对象对应的类以及类所在的包,并且该类实现了Serializable接口),返回的结果经过了List封装
*
* @param objStr
* 包含了对象信息XML格式的字符串
* @return 由XML字串里面保存的对象构成的List(可能是一个或者多个的序列化保存的对象)
*/
public static List objectXmlDecoder(String objStr) {
List objList = new ArrayList();
ByteArrayInputStream bis = null;
try {
bis = new ByteArrayInputStream(objStr.getBytes("UTF-8"));
} catch (UnsupportedEncodingException e1) {
e1.printStackTrace();
}
XMLDecoder decoder = new XMLDecoder(bis);
Object obj = null;
try {
while ((obj = decoder.readObject()) != null) {
objList.add(obj);
}
} catch (Exception e) {
}
try {
bis.close();
} catch (IOException e) {
e.printStackTrace();
}
decoder.close();
return objList;
}
}
分享到:
相关推荐
生成xml格式字符串、序列化XML 对象=》XML文本、反序列化 XML文本=》对象 等方法,对象和xml之间的相互转换、datatable方式转换为xml文本的工具类方法 C#语言
在Java开发中,JAXB(Java Architecture for XML Binding)是一个标准的API,用于将XML文档与Java对象之间进行互相转换。这个技术对于处理XML数据,尤其是解析和生成XML文档非常有用。当我们面临XML文档中存在嵌套子...
4. **XML字符串转实体类**:首先,可能需要将输入的XML字符串转换为`Document`对象,然后按照上述步骤进行反序列化。 5. **实体类转XML**:反之,使用`Marshaller`将Java对象序列化为XML字符串。例如,`marshaller....
**XML序列化** 是将C#对象转换为XML字符串或XML文档的过程。这通常通过`System.Xml.Serialization`命名空间中的`XmlSerializer`类实现。以下是一个简单的例子: ```csharp using System; using System.IO; using ...
同时,可以通过编写相应的工具类来实现xml与json的转换,例如上述示例中提到的XmlExercise工具类就提供了xml字符串和xmlDocument转换为json字符串的功能,以及json字符串转换成xml字符串的功能。 4. 实例讲解:在...
本文将详细介绍如何使用`json-lib`库来进行JSON字符串与Java对象之间的相互转换,并提供具体的代码示例。 #### 二、json-lib简介 `json-lib`是一个用于处理JSON的Java库,它可以将Java对象转换成JSON字符串,也...
2. **Java对象到XML的转化**:同样,需要先创建一个`JAXBContext`,然后获取一个Marshaller对象,调用`marshal()`方法将Java对象转化为XML字符串或写入XML文件。 在Eclipse项目"XML使用demo"中,可能包含了以下步骤...
总的来说,XStream是一个功能丰富的库,它使得Java对象与XML之间的转换变得简单易行。通过理解和掌握XStream的用法,开发者可以更高效地处理数据序列化需求,无论是在存储、传输还是解析XML文档的场景下。
2. **转换为XML**:使用JAXB的Marshaller将Bean转换为XML字符串或写入文件。 ```java import javax.xml.bind.JAXBContext; import javax.xml.bind.Marshaller; import java.io.File; public class WebController { ...
这个类能够将一个对象实例转换为XML字符串,也可以将XML字符串反序列化为对象实例。为了实现这个功能,我们需要创建一个实体类,该类的属性对应XML文档中的元素。然后,通过`XmlSerializer.Serialize`方法将实体对象...
XmlDatasetConvert类提供了四种方法用于将xml对象内容字符串、xml文件、DataSet对象相互转换,这四种方法可以满足各种不同的应用场景,例如数据交换、数据存储、数据分析等。在实际应用中,我们可以根据具体情况选择...
接下来是XML到对象的反序列化,它将XML字符串或XML文件恢复为C#对象。同样,我们使用XmlSerializer类来完成这一操作: ```csharp // 反序列化XML字符串到对象 public static Person DeserializeXmlStringToObject...
要将JavaBean转换为XML字符串,你需要创建一个XStream实例,然后使用`toXML()`方法。下面是一个简单的示例: ```java import com.thoughtworks.xstream.XStream; public class User { private String name; ...
"XML文件与实体类的互相转换" XML文件与实体类的互相转换是软件开发中的一种常见需求,特别是在调用别的平台接口时,通常都是返回XML数据,然后需要将这些数据转换成实体,以便于更方便的操作。下面将详细介绍XML...
序列化是指将Java对象转化为XML字符串的过程,这在保存或传输数据时非常有用。反序列化则是相反的过程,将XML字符串恢复为可操作的Java对象。这两个过程都通过XStream的简单API实现。 要开始使用XStream,你需要先...
4. 反序列化:将XML字符串转换回Java对象,使用`Xstream.fromXML()`方法,传入XML字符串。 例如,假设有一个简单的User类: ```java public class User { private String name; private int age; // getters ...
本文将详细讲解如何使用Java的五种库:Json-Lib、Org.Json、Jackson、Gson和FastJson来实现JSON字符串与Java对象之间的相互转换。 1. **Json-Lib** Json-Lib是一个基于Jakarta Commons BeanUtils和Dozer的Java库,...
1. DOM:创建一个DOM树,然后使用`Document`对象的`createElement()`、`appendChild()`等方法构建XML结构,最后通过`Transformer`将DOM树转换为XML字符串。 2. SAX:通过继承`DefaultHandler`,在遇到特定事件时,...
XStream是一个轻量级、高性能的库,能够将Java对象序列化为XML,同时也能将XML反序列化回Java对象,实现XML和Java对象的互相转换。 首先,我们需要引入XStream库。在给定的描述中提到了两个依赖文件:xstream-1.3.1...
- Jackson库同样提供了反向转换功能,使用`writeValueAsString`方法将JSON对象转换成XML字符串。 - 使用JsonXML Java库:这个库专门用于JSON到XML的转换,提供了简单易用的API。 - Google的Gson库可以通过第三方...