`
lvbo744
  • 浏览: 43891 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

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

阅读更多
 今天看了看java.beans包,发现了两个好东西,XMLEncoder和XMLDecoder。发现自己以前把从XML存取对象真是太费力气啦。做了小工具类,以后可以用用了。

package com.imct.util;
import java.beans.XMLDecoder;
import java.beans.XMLEncoder;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
/**
* <title>使用XML文件存取可序列化的对象的类</title>
* <description>提供保存和读取的方法</description>
* @author 殷晋
* <copyright>清华大学汽车工程开发研究院@2005</copyright>
* @version 1.0
* 2005-8-5 16:44:49
*/
public class ObjectToXMLUtil
{
/**
  * 把java的可序列化的对象(实现Serializable接口)序列化保存到XML文件里面,如果想一次保存多个可序列化对象请用集合进行封装
  * 保存时将会用现在的对象原来的XML文件内容
  * @param obj 要序列化的可序列化的对象
  * @param fileName 带完全的保存路径的文件名 
  * @throws FileNotFoundException 指定位置的文件不存在
  * @throws IOException 输出时发生异常
  * @throws Exception 其他运行时异常
  */
public static void objectXmlEncoder(Object obj,String fileName)
  throws FileNotFoundException,IOException,Exception
{  
  //创建输出文件
  File fo = new File(fileName);
  //文件不存在,就创建该文件
  if(!fo.exists())
  {
   //先创建文件的目录
      String path = fileName.substring(0,fileName.lastIndexOf('.'));
      File pFile = new File(path);
      pFile.mkdirs();         
  }
  //创建文件输出流
  FileOutputStream fos = new FileOutputStream(fo);
  //创建XML文件对象输出类实例
  XMLEncoder encoder = new XMLEncoder(fos);  
  //对象序列化输出到XML文件
  encoder.writeObject(obj);
  encoder.flush(); 
  //关闭序列化工具
  encoder.close();
  //关闭输出流
  fos.close();    

/**
  * 读取由objSource指定的XML文件中的序列化保存的对象,返回的结果经过了List封装
  * @param objSource 带全部文件路径的文件全名
  * @return 由XML文件里面保存的对象构成的List列表(可能是一个或者多个的序列化保存的对象)  
  * @throws FileNotFoundException 指定的对象读取资源不存在
  * @throws IOException 读取发生错误
  * @throws Exception 其他运行时异常发生
  */
public static List objectXmlDecoder(String objSource) 
  throws FileNotFoundException,IOException,Exception
{
  List objList = new ArrayList();    
  File fin = new File(objSource);
  FileInputStream fis = new FileInputStream(fin);
  XMLDecoder decoder = new XMLDecoder(fis);
  Object obj = null;
  try
  {
   while( (obj = decoder.readObject()) != null)
   {
    objList.add(obj);
   }
  }
  catch (Exception e)
  {
   // TODO Auto-generated catch block    
  }
  fis.close();
  decoder.close();     
  return objList;
}
}
8
6
分享到:
评论
4 楼 joachimz 2008-08-16  
用xstream吧XMLEncoder性能太差,太罗嗦
3 楼 Dollyn 2008-08-15  
性能有问题。
2 楼 form_rr 2008-08-15  
此两类能够序列化非get,set方法吗?
1 楼 damiao_cn 2008-08-14  
感谢楼主的帖子
java对象转为xml的那个很好使,可解析xml最后以封装好的list形式放回的那个方法似乎不好使哦

相关推荐

    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 = "&lt;person&gt;&lt;name&gt;John&lt;/name&gt;&lt;age&gt;30&lt;/age&gt;&lt;/person&gt;"; 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解析器...

    xml与实体类转换工具

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

    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类,通常用于封装数据,...

Global site tag (gtag.js) - Google Analytics