今天看了看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;
}
}
分享到:
相关推荐
有了这个Java类,你可以使用Unmarshaller将XML字符串或文件解析为Java对象: ```java import javax.xml.bind.JAXBContext; import javax.xml.bind.Unmarshaller; import java.io.File; public class Main { ...
5. **生成序列化和反序列化代码**:为了方便XML数据和Java对象之间的转换,工具还会生成解析XML和生成XML的代码,通常是基于JAXB(Java Architecture for XML Binding)或其他类似库。 除了XSD转Java,有些工具还...
默认情况下,序列化会保存对象的所有实例变量,但不包括静态变量。这是因为静态变量属于类,而非特定的对象实例。序列化时,只有那些非transient和非static的字段会被写入字节流。 3. **自定义序列化行为** ...
将Java对象序列化成ISO-8859-1、Base64字节流和Xml字符串三种方式。
Java对象序列化是Java平台提供的一种机制,允许将对象的状态转换为字节流,以便存储在磁盘上、通过网络传输或在不同时间点恢复。这个过程涉及到将一个复杂的Java对象模型转换为简单的二进制表示,使得数据可以在不同...
Java序列化是Java平台中的一种持久化机制,它允许对象的状态被转换成字节流,以便存储、在网络上传输或在以后的时间恢复。这个过程被称为序列化,而反过程称为反序列化。在Java中,如果一个对象需要支持序列化,那么...
- 安全性:由于XStream可以直接反序列化XML到任意对象,可能存在安全风险,因此在处理不受信任的输入时应谨慎。 博客链接可能提供了更多关于如何使用XStream的实际示例和最佳实践。在实际项目中,了解并熟练掌握...
在Android中,对象序列化到XML通常涉及到`XmlSerializer`类,这是`java.io.IOException`的子类,提供了一种将Java对象写入XML输出流的方法。这个过程包括以下几个步骤: 1. **创建XMLSerializer实例**:首先,你...
XML4J是一个用于Java对象到XML转换的工具,它提供了方便的方法将Java对象序列化为XML文档,同时也能从XML文档中反序列化恢复Java对象。这个过程涉及到Java的反射机制、XML解析器以及DOM(Document Object Model)...
反之,如果你有一个XML字符串,可以使用XStream将其反序列化回Java对象: ```java String xmlInput = "<person><name>John</name><age>30</age></person>"; Person deserializedPerson = (Person) xstream.fromXML...
XStream对象序列化是一种在Java应用程序中将Java对象转换为XML格式的过程,这主要通过XStream库实现。这个库提供了一种简洁的方式来处理对象到XML的转换,反之亦然,而不需要复杂的配置或对对象进行特定的修改。...
1.[工具类] 读取、打印输出、保存xml .java 2.[工具类] Java中计算任意两个...8.[工具类] 序列化保存为XML文件的工具类 .java 9.[工具类] 验证码img .jsp 10.[工具类] 中文验证.jsp ......... 等等20几个常用工具类.
这个"android XML文件解析和序列化 demo"旨在教你如何处理XML数据,包括解析XML文件以获取信息并将其存储为对象,以及将这些对象序列化回XML文件。下面我们将详细探讨这两个关键过程。 **XML解析** 1. **DOM解析器...
4. **XML字符串转实体类**:首先,可能需要将输入的XML字符串转换为`Document`对象,然后按照上述步骤进行反序列化。 5. **实体类转XML**:反之,使用`Marshaller`将Java对象序列化为XML字符串。例如,`marshaller....
[工具类] 序列化保存为XML文件的工具类 .java.txt [工具类] 一个压缩工具类.java.txt [工具类] 用java编写简单UDP网络通信程序 .java.txt [工具类] 中文验证.jsp.txt [工具类] 日期DateUtil.java [工具类] 文件...
3. **序列化**:创建序列化器实例,调用其方法将对象转换为XML字符串或写入文件。 4. **反序列化**:从XML字符串或文件中读取数据,反序列化回Java对象。 在实际项目中,XML序列化器可以用于保存应用状态、持久化...
2. 序列化XML:使用`Marshaller`接口将Java对象转换为XML文档。例如: ```java JAXBContext jaxbContext = JAXBContext.newInstance(User.class); Marshaller marshaller = jaxbContext.createMarshaller(); ...
在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是一种符合特定规范的Java类,通常用于封装数据,...