`

XMLDecoder/XMLEncoder,今天你用了吗

 
阅读更多

 

  对于xml与java 对象的映射有很多方法,不错一般是第三方jar包,比如JAXB,digester等,实际上在JDK中式有方法直接实现的,不过相信绝大部分用Java的人不大留意他们,这绝对是被埋没的好东西,java.beans.XMLDecoder/XMLEncoder简单易用,不需要特殊配置,不需要dtd, xsd文件,对于一般的xml与java 的映射关系是可以使用它们的。

 


    简单的使用方法:

 

 

 

package com.changyou.xml.test;

import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import com.changyou.myDataItems.model.AnalysisModel;
import com.changyou.myDataItems.model.ConditionField;

public class TestStudent {

	/** 
	 * <P>Title: main </P>
	 * <P>Description: </P>
	 * @param args
	 */
	public static void main(String[] args) throws IOException {
		// TODO Auto-generated method stub

		java.io.File file = new java.io.File("student.xml");
        if(!file.exists()){
            file.createNewFile();
        }
        Student s1 = new Student();
        s1.setNameString("卞哲");
        s1.setAge(10);
        
        
        
        java.io.BufferedOutputStream oop = new java.io.BufferedOutputStream(new java.io.FileOutputStream(file));
        java.beans.XMLEncoder xe = new java.beans.XMLEncoder(oop);
        xe.flush();
        //写入xml
        xe.writeObject(s1);
        xe.close();
        oop.close();
        
        //读取xml文件
        java.beans.XMLDecoder xd = new java.beans.XMLDecoder(new BufferedInputStream(new FileInputStream(file)));

        Student s2 = (Student) xd.readObject();
        xd.close();
        System.out.println("name: "+s2.getNameString());
        System.out.println("age :"+s2.getAge());
	}

}

 

 

执行结果:

name: 卞哲
age :10

 模型类:

 package com.changyou.xml.test;

public class Student {

	private String nameString;
	private int age;
	public String getNameString() {
		return nameString;
	}
	public void setNameString(String nameString) {
		this.nameString = nameString;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	
}
 
2
0
分享到:
评论
1 楼 xia562653223 2012-08-29  
卞哲 

相关推荐

    S22-XMLDecoder反序列化1

    在Java编程语言中,`XMLDecoder`和`XMLEncoder`是用于对象序列化和反序列化的工具。这两个类属于`java.beans`包,主要用于将Java对象转换为XML格式的字符串,以及将XML数据恢复为Java对象。在给定的标题和描述中,...

    java中xml与object的应用 (XMLEncoder应用)

    在使用`XMLEncoder`之前,你需要确保你的对象拥有合适的getter和setter方法,因为`XMLEncoder`会通过反射机制访问对象的属性来构建XML表示。 ```java import java.beans.Encoder; import java.io.FileOutputStream;...

    java 实现的mina server client完全能用的

    例如,你可以使用XMLDecoder和XMLEncoder来处理XML消息。 4. **Filter Chain**:Mina的过滤器链模型允许你在数据传输过程中添加中间层,进行数据处理、日志记录、性能监控等。每个过滤器都可以选择修改或传递数据到...

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

    `java.beans`包中的`XMLEncoder`和`XMLDecoder`就是为此目的设计的。 `XMLEncoder`是一个用于将Java对象编码为XML输出流的类,它能够将对象的属性和结构转换为XML格式。而`XMLDecoder`则相反,它可以解析XML输入流...

    Java自带的序列化方法1

    此外,序列化可能会暴露出敏感信息,因此在处理包含敏感数据的对象时,应谨慎使用序列化,并考虑加密或其他安全措施。 总的来说,Java内置的序列化机制为开发者提供了方便的方式来保存和传输对象状态。`...

    commons-codec-1.10

    6. **XML编码**:XMLDecoder和XMLEncoder允许开发者以XML格式序列化和反序列化Java对象。这对于数据交换和持久化存储来说是极其便利的,同时确保了与XML标准的兼容性。 7. **性能优化**:Apache Commons Codec 1.10...

    Java对象的XML序列化与反序列化实例解析

    Java对象的XML序列化与反序列化是Java开发中一种重要的数据转换技术,它允许我们将Java...通过理解并掌握 `XMLEncoder` 和 `XMLDecoder` 的使用,以及了解其他XML处理库,可以在实际项目中更加自如地处理数据交换问题。

    java持久化的解决方案

    自Java 1.4起,标准库中引入了`XMLEncoder`和`XMLDecoder`类,提供了一种简便的方法将对象序列化为XML文件或从XML文件反序列化对象。这一机制克服了序列化在元数据保留上的不足,使得对象信息在不同应用程序间更为...

    java反射实现Object转json

    此外,Java标准库中的`java.beans.XMLEncoder`和`java.beans.XMLDecoder`也可以用来序列化和反序列化Java对象,但它们是针对XML的,而不是JSON。如果你需要处理JSON,还是要依赖第三方库。 总结起来,虽然Java反射...

    openbean.jar AndroidStudio 导入java.beans.*

    6. **XMLEncoder** 和 **XMLDecoder**: 这两个类提供了一种将Java对象编码为XML格式,以及从XML解码回Java对象的方法。这在数据持久化或跨平台传输时非常有用。 在Android Studio中,由于Android系统本身不直接支持...

    068-2020-08-25 java反序列化的研究.pdf

    Java中的XMLEncoder与XMLDecoder类就是进行XML格式序列化和反序列化的工具。此外,还有其他机制用于处理二进制和JSON格式数据。然而,无论是哪种格式,问题都在于数据转换为对象的这一过程中,如果数据可以由用户...

    Java 语言的反射机制

    在序列化/反序列化过程中,如 `java.beans.XMLEncoder` 和 `java.beans.XMLDecoder` 也是基于反射操作对象的属性。此外,单元测试工具如 JUnit 也会使用反射来调用私有方法进行测试。 然而,虽然反射带来了很大的...

    openbeans(android)

    - **序列化**:`XMLEncoder`和`XMLDecoder`可以将Bean对象序列化为XML,便于存储和传输。 综上所述,`openbeans.jar`为Android开发者提供了一种在平台上使用JavaBeans功能的方式,通过引入这个库,开发者可以充分...

    Java实现画图工具

    2. 加载功能则相反,使用`XMLDecoder`或`ObjectInputStream`从文件中反序列化图形数据,并重新绘制到画布上。 撤销和重做: 1. 为了实现撤销和重做功能,我们需要维护一个操作历史栈。每次用户执行绘制操作,都将...

    java操作xml的方法汇总及解析

    XMLDecoder decoder = new XMLDecoder(new ByteArrayInputStream(xmlStr.getBytes())); return decoder.decode(clazz); } catch (DocumentException e) { throw new RuntimeException(e); } } public static ...

    xml binary soap 序列化

    5. 实现与库:许多编程语言都提供了支持XML和SOAP二进制序列化的库或框架,例如.NET Framework的BinaryFormatter和XmlSerializer,Java的XMLEncoder和XMLDecoder,Python的pickle模块和xml.etree.ElementTree等。...

    [经典]自动将任何javabean封装成xml,返回Element对象

    7. **序列化和反序列化**:除了手动创建XML,Java还提供了`java.beans.XMLEncoder`和`java.beans.XMLDecoder`进行javabean的XML序列化和反序列化,但这通常只适用于标准的javabean,且不支持复杂的嵌套结构。...

    tutorial-xml:关于处理 XML 文档的 Java 教程的示例文件

    `java.io.ObjectOutputStream`和`java.io.ObjectInputStream`可以与`java.beans.XMLEncoder`和`java.beans.XMLDecoder`一起使用,实现对象和XML之间的转换。 在`tutorial-xml-master`压缩包中,可能包含各种示例...

    java–反射

    - 自动序列化和反序列化:如`java.beans.XMLEncoder`和`java.beans.XMLDecoder`。 - 框架设计:Spring框架中大量使用反射实现依赖注入。 - 元编程:允许在运行时检查和修改程序行为。 - 性能优化:反射可用于...

    详解Java编程中对象的序列化

    - `java.beans.XMLEncoder`和`java.beans.XMLDecoder`提供了XML格式的序列化和反序列化,这对于跨平台数据交换和存储可能更有利。 - `java.util.prefs.Preferences`类提供了一种树型结构的键值对持久化,适合存储...

Global site tag (gtag.js) - Google Analytics