当前位置:  开发笔记 > 编程语言 > 正文

Java中的XML序列化?

如何解决《Java中的XML序列化?》经验,为你挑选了5个好方法。

.NET的XML序列化的Java模拟是什么?



1> Cheekysoft..:

2008答案 "官方"Java API现在是JAXB - 用于XML绑定的Java API.请参阅Oracle教程.参考实现位于http://jaxb.java.net/

2018年更新 请注意,JDK9中的SE中不推荐使用Java EE和CORBA模块,而是在JDK11中从SE中删除.因此,要使用JAXB,它将需要位于您的例如应用服务器捆绑的现有企业级环境中,或者您需要手动将其引入.


没错,JAXB绝对是最好的选择!

2> Barak Schill..:

XStream非常擅长将对象序列化为XML而没有太多配置和资金!(它是在BSD许可下).

我们在我们的一个项目中使用它来替换普通的旧java-serialization,它几乎开箱即用.


非常有用,它可能在complecated树结构上有问题,例如JGraph与非字符串节点对象.

3> ARKBAN..:
"简单的XML序列化"项目

您可能希望查看Simple XML Serialization项目.这是我在.Net中发现的最接近System.Xml.Serialization的东西.



4> so_mv..:

JAXB是JDK标准版1.6+的一部分.所以它是FREE没有额外的库来下载和管理.这里有一个简单的例子

XStream好像死了.最新更新是在2008年12月6日. Simple看起来像JAXB一样简单和简单,但我找不到任何许可信息来评估它以供企业使用.


XStream并没有死,它只是成熟和稳定 - 这意味着没有太多可以添加到核心功能.对于JAXB参考实现也是如此,过去几年没有太多活动.

5> Mishax..:

值得一提的是,从版本1.4开始,Java就有了java.beans.XMLEncoder和java.beans.XMLDecoder类.这些类执行的XML编码至少与XML序列化非常相似,在某些情况下可能会为您提供帮助.

如果您的类坚持JavaBeans规范的getter和setter,这个方法很容易使用,您不需要架构.有以下警告:

与普通的Java序列化一样

编码和解码在InputStream和OutputStream上运行

该过程使用熟悉的writeObject和readObject方法

与普通的Java序列化相反

编码但也解码导致调用构造函数和初始化程序

编码和解码工作,无论您的类是否实现Serializable

不考虑瞬态修饰符

仅适用于具有公共构造函数的公共类

例如,请采用以下声明:

public class NPair {
  public NPair() { }
  int number1 = 0;
  int number2 = 0;
  public void setNumber1(int value) { number1 = value;}
  public int getNumber1() { return number1; }
  public void setNumber2(int value) { number2 = value; }
  public int getNumber2() {return number2;}
}

执行此代码:

NPair fe = new NPair();
fe.setNumber1(12);
fe.setNumber2(13);
FileOutputStream fos1 = new FileOutputStream("d:\\ser.xml");
java.beans.XMLEncoder xe1 = new java.beans.XMLEncoder(fos1);
xe1.writeObject(fe);
xe1.close();

会导致以下文件:



 
  
   12
  
  
   13
  
 

推荐阅读
路人甲
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有