`
rq2_79
  • 浏览: 239068 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

JAVA对象序列化保存为XML文件的工具类

    博客分类:
  • java
阅读更多
java 代码
 
  1. import java.beans.XMLDecoder;  
  2. import java.beans.XMLEncoder;  
  3. import java.io.File;  
  4. import java.io.FileInputStream;  
  5. import java.io.FileNotFoundException;  
  6. import java.io.FileOutputStream;  
  7. import java.io.IOException;  
  8. import java.util.ArrayList;  
  9. import java.util.List;  
  10.   
  11. public class ObjectToXMLUtil {  
  12.   
  13.     /** 
  14.      * 把java的可序列化的对象(实现Serializable接口)序列化保存到XML文件里面,如果想一次保存多个可序列化对象请用集合进行封装 
  15.      * 保存时将会用现在的对象原来的XML文件内容 
  16.      *  
  17.      * @param obj 
  18.      *            要序列化的可序列化的对象 
  19.      * @param fileName 
  20.      *            带完全的保存路径的文件名 
  21.      * @throws FileNotFoundException 
  22.      *             指定位置的文件不存在 
  23.      * @throws IOException 
  24.      *             输出时发生异常 
  25.      * @throws Exception 
  26.      *             其他运行时异常 
  27.      */  
  28.     public static void objectXmlEncoder(Object obj, String fileName) {  
  29.         // 创建输出文件  
  30.         File fo = new File(fileName);  
  31.         // 文件不存在,就创建该文件  
  32.         if (!fo.exists()) {  
  33.             // 先创建文件的目录  
  34.             String path = fileName.substring(0, fileName.lastIndexOf('.'));  
  35.             File pFile = new File(path);  
  36.             pFile.mkdirs();  
  37.         }  
  38.         // 创建文件输出流  
  39.         FileOutputStream fos = null;  
  40.         XMLEncoder encoder = null;  
  41.         try {  
  42.             fos = new FileOutputStream(fo);  
  43.             // 创建XML文件对象输出类实例  
  44.             encoder = new XMLEncoder(fos);  
  45.             // 对象序列化输出到XML文件  
  46.             encoder.writeObject(obj);  
  47.             encoder.flush();  
  48.             // 关闭序列化工具  
  49.             encoder.close();  
  50.             // 关闭输出流  
  51.             fos.close();  
  52.         } catch (Exception e) {  
  53.             e.printStackTrace();  
  54.         } finally {  
  55.             if (encoder != null) {  
  56.                 encoder.close();  
  57.             }  
  58.             if (fos != null) {  
  59.                 try {  
  60.                     fos.close();  
  61.                 } catch (IOException e) {  
  62.                     e.printStackTrace();  
  63.                 }  
  64.             }  
  65.         }  
  66.     }  
  67.   
  68.     /** 
  69.      * 读取由objSource指定的XML文件中的序列化保存的对象,返回的结果经过了List封装 
  70.      *  
  71.      * @param objSource 
  72.      *            带全部文件路径的文件全名 
  73.      * @return 由XML文件里面保存的对象构成的List列表(可能是一个或者多个的序列化保存的对象) 
  74.      * @throws FileNotFoundException 
  75.      *             指定的对象读取资源不存在 
  76.      * @throws IOException 
  77.      *             读取发生错误 
  78.      * @throws Exception 
  79.      *             其他运行时异常发生 
  80.      */  
  81.     public static List objectXmlDecoder(String objSource) {  
  82.         List objList = new ArrayList();  
  83.         File fin = new File(objSource);  
  84.         FileInputStream fis = null;  
  85.         XMLDecoder decoder = null;  
  86.         try {  
  87.             fis = new FileInputStream(fin);  
  88.             decoder = new XMLDecoder(fis);  
  89.             Object obj = null;  
  90.             while ((obj = decoder.readObject()) != null) {  
  91.                 objList.add(obj);  
  92.             }  
  93.             fis.close();  
  94.             decoder.close();  
  95.         } catch (Exception e1) {  
  96.             e1.printStackTrace();  
  97.         } finally {  
  98.             if (decoder != null) {  
  99.                 decoder.close();  
  100.             }  
  101.             if (fis != null) {  
  102.                 try {  
  103.                     fis.close();  
  104.                 } catch (IOException e) {  
  105.                     e.printStackTrace();  
  106.                 }  
  107.             }  
  108.         }  
  109.         return objList;  
  110.     }  
  111.   
  112. }  
分享到:
评论
1 楼 rq2_79 2007-10-12  
import java.beans.XMLDecoder;
import java.beans.XMLEncoder;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;

import org.apache.log4j.Logger;

/**
*
* Bean与Xml转换方法类
*
* @author rq2.
* @version 1.0.0, 2007-09-14
* @see
* @since
*
*/
public class BeanXml {

private static Logger logger = Logger
.getLogger("BeanXml");

/**
* Bean转换成Xml
*
* @param object
* @return
*/
public static String Bean2Xml(Object object) {
String beanXml = "";
ByteArrayOutputStream out = null;
XMLEncoder encoder = null;
try {
out = new ByteArrayOutputStream();
encoder = new XMLEncoder(out);
// 对象序列化输出到XML文件
encoder.writeObject(object);
encoder.flush();
// 关闭序列化工具
encoder.close();
// 关闭输出流
out.flush();
beanXml = new String(out.toByteArray(), "utf-8");
out.close();
} catch (Exception e) {
logger.error("Bean2Xml转换失败");
} finally {
if (encoder != null) {
encoder.close();
}
if (out != null) {
try {
out.close();
} catch (IOException e) {
logger.error("Bean2Xml转换失败");
}
}
}
return beanXml;
}

/**
* Xml转换成Object
*
* @param xml
* @return
*/
public static Object Xml2Bean(String xml) {
Object object = null;
ByteArrayInputStream input = null;
XMLDecoder decoder = null;
try {
input = new ByteArrayInputStream(xml.getBytes("utf-8"));
decoder = new XMLDecoder(input);
object = decoder.readObject();
input.close();
decoder.close();
} catch (Exception e) {
logger.error("Xml2Bean转换失败");
} finally {
if (decoder != null) {
decoder.close();
}
if (input != null) {
try {
input.close();
} catch (IOException e) {
logger.error("Xml2Bean转换失败");
}
}
}
return object;
}
}

相关推荐

    JAXB工具类 xml转为java对象 java对象转为xml

    有了这个Java类,你可以使用Unmarshaller将XML字符串或文件解析为Java对象: ```java import javax.xml.bind.JAXBContext; import javax.xml.bind.Unmarshaller; import java.io.File; public class Main { ...

    xml文件自动转成java对象工具

    5. **生成序列化和反序列化代码**:为了方便XML数据和Java对象之间的转换,工具还会生成解析XML和生成XML的代码,通常是基于JAXB(Java Architecture for XML Binding)或其他类似库。 除了XSD转Java,有些工具还...

    关于 Java 对象序列化您不知道的 5 件事

    默认情况下,序列化会保存对象的所有实例变量,但不包括静态变量。这是因为静态变量属于类,而非特定的对象实例。序列化时,只有那些非transient和非static的字段会被写入字节流。 3. **自定义序列化行为** ...

    对象序列化工具类

    将Java对象序列化成ISO-8859-1、Base64字节流和Xml字符串三种方式。

    Java对象序列化的秘密

    Java对象序列化是Java平台提供的一种机制,允许将对象的状态转换为字节流,以便存储在磁盘上、通过网络传输或在不同时间点恢复。这个过程涉及到将一个复杂的Java对象模型转换为简单的二进制表示,使得数据可以在不同...

    Java序列化对象工具类 Eclipse工程(SerializUtil.zip)

    Java序列化是Java平台中的一种持久化机制,它允许对象的状态被转换成字节流,以便存储、在网络上传输或在以后的时间恢复。这个过程被称为序列化,而反过程称为反序列化。在Java中,如果一个对象需要支持序列化,那么...

    使用 XStream 把 Java 对象序列化为 XML

    - 安全性:由于XStream可以直接反序列化XML到任意对象,可能存在安全风险,因此在处理不受信任的输入时应谨慎。 博客链接可能提供了更多关于如何使用XStream的实际示例和最佳实践。在实际项目中,了解并熟练掌握...

    对象序列化成XMLDemo

    在Android中,对象序列化到XML通常涉及到`XmlSerializer`类,这是`java.io.IOException`的子类,提供了一种将Java对象写入XML输出流的方法。这个过程包括以下几个步骤: 1. **创建XMLSerializer实例**:首先,你...

    java 对象与xml 相互序列化 xml4j (含源码)

    XML4J是一个用于Java对象到XML转换的工具,它提供了方便的方法将Java对象序列化为XML文档,同时也能从XML文档中反序列化恢复Java对象。这个过程涉及到Java的反射机制、XML解析器以及DOM(Document Object Model)...

    XML转换为JAVA对象的方法

    反之,如果你有一个XML字符串,可以使用XStream将其反序列化回Java对象: ```java String xmlInput = "<person><name>John</name><age>30</age></person>"; Person deserializedPerson = (Person) xstream.fromXML...

    XStream对象序列化

    XStream对象序列化是一种在Java应用程序中将Java对象转换为XML格式的过程,这主要通过XStream库实现。这个库提供了一种简洁的方式来处理对象到XML的转换,反之亦然,而不需要复杂的配置或对对象进行特定的修改。...

    常用的java工具类

    1.[工具类] 读取、打印输出、保存xml .java 2.[工具类] Java中计算任意两个...8.[工具类] 序列化保存为XML文件的工具类 .java 9.[工具类] 验证码img .jsp 10.[工具类] 中文验证.jsp ......... 等等20几个常用工具类.

    android XML文件解析和序列化 demo

    这个"android XML文件解析和序列化 demo"旨在教你如何处理XML数据,包括解析XML文件以获取信息并将其存储为对象,以及将这些对象序列化回XML文件。下面我们将详细探讨这两个关键过程。 **XML解析** 1. **DOM解析器...

    30个java工具类

    [工具类] 序列化保存为XML文件的工具类 .java.txt [工具类] 一个压缩工具类.java.txt [工具类] 用java编写简单UDP网络通信程序 .java.txt [工具类] 中文验证.jsp.txt [工具类] 日期DateUtil.java [工具类] 文件...

    12xml序列化器

    3. **序列化**:创建序列化器实例,调用其方法将对象转换为XML字符串或写入文件。 4. **反序列化**:从XML字符串或文件中读取数据,反序列化回Java对象。 在实际项目中,XML序列化器可以用于保存应用状态、持久化...

    webservice之使用jaxb把xml转换Object或把对象转换成xml文件

    2. 序列化XML:使用`Marshaller`接口将Java对象转换为XML文档。例如: ```java JAXBContext jaxbContext = JAXBContext.newInstance(User.class); Marshaller marshaller = jaxbContext.createMarshaller(); ...

    XML解析工具类

    在Java中,`javax.xml.bind.JAXBContext` 和 `javax.xml.bind.Marshaller/Unmarshaller` 是关键接口,用于实现Java对象到XML的序列化和反序列化。 4. **StAX(Streaming API for XML)** StAX是一种流式API,介于...

    java持久化工具类:JavaBean与XML

    在Java编程中,持久化是将数据保存到可长期存储的介质中,以便在后续的程序运行中可以恢复和使用这些数据。JavaBean和XML在Java持久化中扮演着重要的角色。JavaBean是一种符合特定规范的Java类,通常用于封装数据,...

    XStream <--> Java 对象序列化为 XML 互换

    XStream 是一种序列化工具而不是数据绑定工具,就是说不能从 XML 或者 XML Schema Definition (XSD) 文件生成类。 和其他序列化工具相比,XStream 有三个突出的特点: XStream 不关心序列化/逆序列化的类的字段的...

Global site tag (gtag.js) - Google Analytics