`
623deyingxiong
  • 浏览: 190193 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

XML字符串与对象的相互转换

    博客分类:
  • XML
阅读更多
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;
	}
}

 

分享到:
评论

相关推荐

    C# 方式生成xml格式字符串

    生成xml格式字符串、序列化XML 对象=》XML文本、反序列化 XML文本=》对象 等方法,对象和xml之间的相互转换、datatable方式转换为xml文本的工具类方法 C#语言

    JAVA JAXB 解析XML嵌套子节点为字符串

    在Java开发中,JAXB(Java Architecture for XML Binding)是一个标准的API,用于将XML文档与Java对象之间进行互相转换。这个技术对于处理XML数据,尤其是解析和生成XML文档非常有用。当我们面临XML文档中存在嵌套子...

    xml与实体类转换工具

    4. **XML字符串转实体类**:首先,可能需要将输入的XML字符串转换为`Document`对象,然后按照上述步骤进行反序列化。 5. **实体类转XML**:反之,使用`Marshaller`将Java对象序列化为XML字符串。例如,`marshaller....

    C#对象和Xml对象的相互转化

    **XML序列化** 是将C#对象转换为XML字符串或XML文档的过程。这通常通过`System.Xml.Serialization`命名空间中的`XmlSerializer`类实现。以下是一个简单的例子: ```csharp using System; using System.IO; using ...

    java实现Xml与json之间的相互转换操作示例

    同时,可以通过编写相应的工具类来实现xml与json的转换,例如上述示例中提到的XmlExercise工具类就提供了xml字符串和xmlDocument转换为json字符串的功能,以及json字符串转换成xml字符串的功能。 4. 实例讲解:在...

    JSON 字符串 与 java 对象的转换

    本文将详细介绍如何使用`json-lib`库来进行JSON字符串与Java对象之间的相互转换,并提供具体的代码示例。 #### 二、json-lib简介 `json-lib`是一个用于处理JSON的Java库,它可以将Java对象转换成JSON字符串,也...

    XML与Java对象互相转化Demo(Eclipse)

    2. **Java对象到XML的转化**:同样,需要先创建一个`JAXBContext`,然后获取一个Marshaller对象,调用`marshal()`方法将Java对象转化为XML字符串或写入XML文件。 在Eclipse项目"XML使用demo"中,可能包含了以下步骤...

    XStream:Object与Xml字符串 互相转换

    总的来说,XStream是一个功能丰富的库,它使得Java对象与XML之间的转换变得简单易行。通过理解和掌握XStream的用法,开发者可以更高效地处理数据序列化需求,无论是在存储、传输还是解析XML文档的场景下。

    xml和bean 互相转换

    2. **转换为XML**:使用JAXB的Marshaller将Bean转换为XML字符串或写入文件。 ```java import javax.xml.bind.JAXBContext; import javax.xml.bind.Marshaller; import java.io.File; public class WebController { ...

    c# XML 与实体相互转换 源代码

    这个类能够将一个对象实例转换为XML字符串,也可以将XML字符串反序列化为对象实例。为了实现这个功能,我们需要创建一个实体类,该类的属性对应XML文档中的元素。然后,通过`XmlSerializer.Serialize`方法将实体对象...

    XML与DataSet的相互转换类

    XmlDatasetConvert类提供了四种方法用于将xml对象内容字符串、xml文件、DataSet对象相互转换,这四种方法可以满足各种不同的应用场景,例如数据交换、数据存储、数据分析等。在实际应用中,我们可以根据具体情况选择...

    对象与xml相互转换

    接下来是XML到对象的反序列化,它将XML字符串或XML文件恢复为C#对象。同样,我们使用XmlSerializer类来完成这一操作: ```csharp // 反序列化XML字符串到对象 public static Person DeserializeXmlStringToObject...

    使用xstream实现对JavaBean与xml字符串的互转

    要将JavaBean转换为XML字符串,你需要创建一个XStream实例,然后使用`toXML()`方法。下面是一个简单的示例: ```java import com.thoughtworks.xstream.XStream; public class User { private String name; ...

    XML文件与实体类的互相转换

    "XML文件与实体类的互相转换" XML文件与实体类的互相转换是软件开发中的一种常见需求,特别是在调用别的平台接口时,通常都是返回XML数据,然后需要将这些数据转换成实体,以便于更方便的操作。下面将详细介绍XML...

    XStream测试Demo-xml与java对象的相互转换

    序列化是指将Java对象转化为XML字符串的过程,这在保存或传输数据时非常有用。反序列化则是相反的过程,将XML字符串恢复为可操作的Java对象。这两个过程都通过XStream的简单API实现。 要开始使用XStream,你需要先...

    xml和实体对象相互转换 一步到位

    4. 反序列化:将XML字符串转换回Java对象,使用`Xstream.fromXML()`方法,传入XML字符串。 例如,假设有一个简单的User类: ```java public class User { private String name; private int age; // getters ...

    Java实现Json字符串与Object对象相互转换的方式总结

    本文将详细讲解如何使用Java的五种库:Json-Lib、Org.Json、Jackson、Gson和FastJson来实现JSON字符串与Java对象之间的相互转换。 1. **Json-Lib** Json-Lib是一个基于Jakarta Commons BeanUtils和Dozer的Java库,...

    对XML数据与JVAV对象之间的相互转换

    1. DOM:创建一个DOM树,然后使用`Document`对象的`createElement()`、`appendChild()`等方法构建XML结构,最后通过`Transformer`将DOM树转换为XML字符串。 2. SAX:通过继承`DefaultHandler`,在遇到特定事件时,...

    好用的xStream XML和JAVA对象互相转换的简单示例

    XStream是一个轻量级、高性能的库,能够将Java对象序列化为XML,同时也能将XML反序列化回Java对象,实现XML和Java对象的互相转换。 首先,我们需要引入XStream库。在给定的描述中提到了两个依赖文件:xstream-1.3.1...

    XML、JAVA、JSON多种方式互相转换

    - Jackson库同样提供了反向转换功能,使用`writeValueAsString`方法将JSON对象转换成XML字符串。 - 使用JsonXML Java库:这个库专门用于JSON到XML的转换,提供了简单易用的API。 - Google的Gson库可以通过第三方...

Global site tag (gtag.js) - Google Analytics