精华内容
下载资源
问答
  • 1.先定义一个Java对象Person:public class Person{String name;int age;int number;public String getName(){return name;}public void setName(String name){this.name = name;}public int getAge(){return age;}...

    1.先定义一个Java对象Person:

    public class Person

    {

    String name;

    int age;

    int number;

    public String getName()

    {

    return name;

    }

    public void setName(String name)

    {

    this.name = name;

    }

    public int getAge()

    {

    return age;

    }

    public void setAge(int age)

    {

    this.age = age;

    }

    public int getNumber()

    {

    return number;

    }

    public void setNumber(int number)

    {

    this.number = number;

    }

    @Override

    public String toString()

    {

    return "Person [name=" + name + ", age=" + age + ", number=" + number

    + "]";

    }

    }

    2.使用阿里巴巴的fastjson-1.2.13.jar(http://maven.outofmemory.cn/com.alibaba/fastjson/1.2.13/)工具包的,通过 JSON 类的 toJSONString (Object object)方法,把Java对象直接转换为String类型的json串,代码如下:

    Person person = new Person();

    person.setName("老四");

    person.setAge(26);

    person.setNumber(16);

    // JSON对象序列化

    String personJson = null;

    // 将Java对象转换为json

    personJson = JSON.toJSONString(person);

    System.out.println(personJson);

    3.同样的,通过该工具包,可以把json串转换为Java对象,调用parseObject(String text, Class clazz)方法,只需要传入json串和目标Java对象Person类的class即可,代码如下:

    // 将json转换为Java对象

    Person parsePerson = JSON.parseObject(personJson, person.getClass());

    System.out.println(parsePerson);

    4.使用xstream-1.4.9.jar(http://maven.outofmemory.cn/com.thoughtworks.xstream/xstream/1.4.9/)工具包,只需创建一个XStream对象,然后使用 toXML(Object obj) 方法,即可实现Java对象到XML的转换,代码如下:

    Person person = new Person();

    person.setName("老四");

    person.setAge(26);

    person.setNumber(16);

    // 先创建一下XStream对象

    XStream xStream = new XStream(new DomDriver());

    // 设置Person类的别名

    xStream.alias("老四", Person.class);

    // 将Java对象序列化成XML

    String personXML = xStream.toXML(person);

    //输出XML

    System.out.println(personXML);

    5.同样的,通过该工具包,可以把XML转换为Java对象,调用 fromXML(String xml) 方法,把String 类型的XML参数传入即可,代码如下:

    // 将XML转换为Java对象

    Person parsePerson = (Person) xStream.fromXML(personXML);

    //输出Java对象

    System.out.println(parsePerson);

    XStream对象相当Java对象和XML之间的转换器,转换过程是双向的。创建XSteam对象的方式很简单,只需要new XStream()即可;

    Java到xml,用toXML()方法。

    Xml到Java,用fromXML()方法。

    在没有任何设置默认情况下,java到xml的映射,是java成员名对应xml的元素名,java类的全名对应xml根元素的名字。而实际中,往往是xml和java类都有了,要完成相互转换,必须进行别名映射。

    别名配置包含三种情况:

    1、类别名,用alias(String name, Class type)。

    2、类成员别名,用aliasField(String alias, Class definedIn, String fieldName)

    3、类成员作为属性别名,用 aliasAttribute(Class definedIn, String attributeName, String alias),单独命名没有意义,还要通过useAttributeFor(Class definedIn, String fieldName) 应用到某个类上。

    C#将对象序列化成JSON字符串

    C#将对象序列化成JSON字符串 public string GetJsonString() { List products = new List

    C#中类的字段或属性不被序列化成JSON或XML

    将一个类序列化成JSON或XML时,如果某个字段或属性不想被序列化,则可以使用以下Attribute: 1.[Newtonsoft.Json.JsonIgnore]特性:使用Newtonsoft.Js ...

    .Net使用Newtonsoft.Json.dll(JSON.NET)对象序列化成json、反序列化json示例教程

    JSON作为一种轻量级的数据交换格式,简单灵活,被很多系统用来数据交互,作为一名.NET开发人员,JSON.NET无疑是最好的序列化框架,支持XML和JSON序列化,高性能,免费开源,支持LINQ查询 ...

    在.net core 的webapi项目中将对象序列化成json

    问题:vs2017 15.7.6创建一个基于.net core 2.1的webapi项目,默认生成的控制器继承自ControllerBase类 在此情况下无法使用Json()方法 将一个对象转成jso ...

    对象序列化成Json字符串 及 反序列化成对象

    一. public static string JsonSerializer(T t)        {            DataContractJsonSerializer ...

    ObjC 利用反射和KVC实现嵌套对象序列化成JSON数据

    原理: 0.创建一个新的可变字典:NSMutableDictionary 1.采用class_copyPropertyList函数遍历对象的属性 2.property_getName获取属性名,val ...

    C#实体对象序列化成Json并让字段的首字母小写的两种解决方法

    引言:最近在工作中遇到与某些API对接的post的数据需要将对象的字段首字母小写.解决办法有两种:第一种:使用对象的字段属性设置JsonProperty来实现(不推荐,因为需要手动的修改每个字段的属性 ...

    C#实体对象序列化成Json,并让字段的首字母小写

    引言:最近在工作中遇到与某些API对接的post的数据需要将对象的字段首字母小写.解决办法有两种:第一种:使用对象的字段属性设置JsonProperty来实现(不推荐,因为需要手动的修改每个字段的属性 ...

    在C#中将对象序列化成Json格式

    在C#中将对象转换为Json格式的字符串. //匿名对象 var dataObj = new { Number = 1, Name = "Json" }; //将返回的时间格式解析 ...

    随机推荐

    linuxmint 17没有vim

    首先上软件管理器中安装vim,之后配置.vimrc文件 下面是从网上摘抄的配置文件: """""""""&qu ...

    C# 利用NPOI 实现Excel转html

    public void ExcelToHtml(string fileName, IWorkbook workbook) { ExcelToHtmlConverter excelToHtmlConve ...

    第 19 章 CSS 其他样式

    学习要点: 1.颜色和透明度 2.盒子阴影和轮廓 3.光标样式 主讲教师:李炎恢 本章主要探讨 HTML5 中 CSS 其他剩下几个常用的样式,包括颜色.透明度.盒子的阴影轮廓以及光标的样式. 一.颜 ...

    Codeforces 749C:Voting(暴力模拟)

    http://codeforces.com/problemset/problem/749/C 题意:有n个人投票,分为 D 和 R 两派,从1~n的顺序投票,轮到某人投票的时候,他可以将对方的一个人K ...

    Emacs和它的朋友们——阅读源代码篇(转)

    正如那本一书中指出的那样,源代码阅读一直没有被很好的重 视:你上大学的时候有“代码阅读”这门课吗?相信没有. 1 Source Insight 谈到阅读源代码, ...

    linux awk命令学习

    . awk的运行过程 ) awk_script的组成: ① awk_script可以由一条或多条awk_cmd组成,两条awk_cmd之间一般以NEWLINE分隔 ② awk_cmd由两部分组成: a ...

    什么是FastCGI?

    什么是FastCGI? PHP的FastCGI使你的所有php应用软件通过mod_fastci运行,而不是mod_phpsusexec.FastCGI应用速度很快 是因为他们持久稳定.不必对每一个请求 ...

    db2 表空间容器调整

    1.查看当前容器的分布,并确定如何调整 db2look -d sample -l -cor -dp -o dd.sql 2.给表空间添加容器 db2 "alter tablespace tb ...

    展开全文
  • 我想从一个模式生成Java类的简单方法,以便我可以轻松地反序列化xml并使用对象进行解释.使用Jaxb会很棒,但我对任何可以完成同样事情的框架持开放态度.架构是HL7 CDA架构.它非常复杂,我猜这就是我遇到问题的原因.我...

    我想从一个模式生成

    Java类的简单方法,以便我可以轻松地反序列化xml并使用对象进行解释.

    使用Jaxb会很棒,但我对任何可以完成同样事情的框架持开放态度.架构是HL7 CDA架构.它非常复杂,我猜这就是我遇到问题的原因.

    我尝试使用xjc和JAXB(这将是理想的)但我得到以下错误

    xjc -d ~/code/ccd/java -p net.msdelta.cda -xmlschema -verbose CDA.xsd

    parsing a schema...

    compiling a schema...

    [INFO] generating code

    unknown location

    Exception in thread "main" java.lang.IllegalArgumentException: trying to create the same field twice: id

    at com.sun.codemodel.internal.JDefinedClass.field(JDefinedClass.java:408)

    at com.sun.codemodel.internal.JDefinedClass.field(JDefinedClass.java:379)

    at com.sun.tools.internal.xjc.generator.bean.field.AbstractFieldWithVar.createField(AbstractFieldWithVar.java:61)

    at com.sun.tools.internal.xjc.generator.bean.field.SingleField.(SingleField.java:78)

    at com.sun.tools.internal.xjc.generator.bean.field.SingleField.(SingleField.java:65)

    at sun.reflect.GeneratedConstructorAccessor8.newInstance(Unknown Source)

    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)

    at java.lang.reflect.Constructor.newInstance(Constructor.java:513)

    at com.sun.tools.internal.xjc.generator.bean.field.GenericFieldRenderer.generate(GenericFieldRenderer.java:53)

    at com.sun.tools.internal.xjc.generator.bean.field.DefaultFieldRenderer.generate(DefaultFieldRenderer.java:68)

    at com.sun.tools.internal.xjc.generator.bean.BeanGenerator.generateFieldDecl(BeanGenerator.java:736)

    at com.sun.tools.internal.xjc.generator.bean.BeanGenerator.generateClassBody(BeanGenerator.java:524)

    at com.sun.tools.internal.xjc.generator.bean.BeanGenerator.(BeanGenerator.java:224)

    at com.sun.tools.internal.xjc.generator.bean.BeanGenerator.generate(BeanGenerator.java:164)

    at com.sun.tools.internal.xjc.model.Model.generateCode(Model.java:275)

    at com.sun.tools.internal.xjc.Driver.run(Driver.java:332)

    at com.sun.tools.internal.xjc.Driver.run(Driver.java:180)

    at com.sun.tools.internal.xjc.Driver._main(Driver.java:105)

    at com.sun.tools.internal.xjc.Driver.access$000(Driver.java:63)

    at com.sun.tools.internal.xjc.Driver$1.run(Driver.java:85)

    展开全文
  • 1.先定义一个Java对象Person:public class Person{String name;int age;int number;public String getName(){return name;}public void setName(String name){this.name = name;}public int getAge(){return age;}...

    1.先定义一个Java对象Person:

    public class Person

    {

    String name;

    int age;

    int number;

    public String getName()

    {

    return name;

    }

    public void setName(String name)

    {

    this.name = name;

    }

    public int getAge()

    {

    return age;

    }

    public void setAge(int age)

    {

    this.age = age;

    }

    public int getNumber()

    {

    return number;

    }

    public void setNumber(int number)

    {

    this.number = number;

    }

    @Override

    public String toString()

    {

    return "Person [name=" + name + ", age=" + age + ", number=" + number

    + "]";

    }

    }

    2、使用阿里巴巴的fastjson-1.2.13.jar(http://maven.outofmemory.cn/com.alibaba/fastjson/1.2.13/)工具包的,通过 JSON 类的 toJSONString (Object object)方法,把Java对象直接转换为String类型的json串,代码如下:

    Person person = new Person();

    person.setName("老四");

    person.setAge(26);

    person.setNumber(16);

    // JSON对象序列化

    String personJson = null;

    // 将Java对象转换为json

    personJson = JSON.toJSONString(person);

    System.out.println(personJson);

    3、同样的,通过该工具包,可以把json串转换为Java对象,调用parseObject(String text, Class clazz)方法,只需要传入json串和目标Java对象Person类的class即可,代码如下:

    // 将json转换为Java对象

    Person parsePerson = JSON.parseObject(personJson, person.getClass());

    System.out.println(parsePerson);

    4、使用xstream-1.4.9.jar(http://maven.outofmemory.cn/com.thoughtworks.xstream/xstream/1.4.9/)工具包,只需创建一个XStream对象,然后使用 toXML(Object obj) 方法,即可实现Java对象到XML的转换,代码如下:

    Person person = new Person();

    person.setName("老四");

    person.setAge(26);

    person.setNumber(16);

    // 先创建一下XStream对象

    XStream xStream = new XStream(new DomDriver());

    // 设置Person类的别名

    xStream.alias("老四", Person.class);

    // 将Java对象序列化成XML

    String personXML = xStream.toXML(person);

    //输出XML

    System.out.println(personXML);

    5、同样的,通过该工具包,可以把XML转换为Java对象,调用 fromXML(String xml) 方法,把String 类型的XML参数传入即可,代码如下:

    // 将XML转换为Java对象

    Person parsePerson = (Person) xStream.fromXML(personXML);

    //输出Java对象

    System.out.println(parsePerson);

    说明:

    XStream对象相当Java对象和XML之间的转换器,转换过程是双向的。创建XSteam对象的方式很简单,只需要new XStream()即可;

    Java到xml,用toXML()方法。

    Xml到Java,用fromXML()方法。

    在没有任何设置默认情况下,java到xml的映射,是java成员名对应xml的元素名,java类的全名对应xml根元素的名字。而实际中,往往是xml和java类都有了,要完成相互转换,必须进行别名映射。

    别名配置包含三种情况:

    1、类别名,用alias(String name, Class type)。

    2、类成员别名,用aliasField(String alias, Class definedIn, String fieldName)

    3、类成员作为属性别名,用 aliasAttribute(Class definedIn, String attributeName, String alias),单独命名没有意义,还要通过useAttributeFor(Class definedIn, String fieldName) 应用到某个类上。

    以上这篇将Java对象序列化成JSON和XML格式的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

    展开全文
  • 怎么也没有弄明白,怎么序列化成XML文件。处入半解状态。在网上找了很多,大部分是理论上的。没有实际的例子。功夫不负有心人,终于找到了。做了下测试终于成功。忍不住记录的下来。JXmlSerializable 是一个利用java...

    今天看了下JAVA序列化。还是一知半解。怎么也没有弄明白,怎么序列化成XML文件。处入半解状态。在网上找了很多,大部分是理论上的。没有实际的例子。功夫不负有心人,终于找到了。做了下测试终于成功。忍不住记录的下来。

    JXmlSerializable   是一个利用java反射,通过调用对象中所有以get(不区分大小写)开头的方法除去getClass方法,生成xml格式,希望与大家分享一下

    下面是一个parent对象,包含两个child对象  生成的xml如下

    Child类

    None.gifpackagexmlTest;

    None.gif

    None.gifimportjava.io.FileNotFoundException;

    None.gifimportjava.io.IOException;

    None.gifimportjava.io.PrintWriter;

    None.gifimportjava.lang.reflect.InvocationTargetException;

    ExpandedBlockStart.gif

    ContractedBlock.gifpublicclassChildextendsJXmlSerializable...{

    6a9c071a08f1dae2d3e1c512000eef41.png

    6a9c071a08f1dae2d3e1c512000eef41.pngprivateString _name;

    6a9c071a08f1dae2d3e1c512000eef41.pngprivateString _sex;

    6a9c071a08f1dae2d3e1c512000eef41.pngprivateintage;

    6a9c071a08f1dae2d3e1c512000eef41.png

    ExpandedSubBlockStart.gif

    ContractedSubBlock.gifpublicvoidsetAge(intnum)...{

    6a9c071a08f1dae2d3e1c512000eef41.png  age=num;

    ExpandedSubBlockEnd.gif }6a9c071a08f1dae2d3e1c512000eef41.png

    ExpandedSubBlockStart.gif

    ContractedSubBlock.gifpublicintgetAge()...{

    6a9c071a08f1dae2d3e1c512000eef41.pngreturnage;

    ExpandedSubBlockEnd.gif }6a9c071a08f1dae2d3e1c512000eef41.png

    ExpandedSubBlockStart.gif

    ContractedSubBlock.gifpublicvoidsetName(String name)...{

    6a9c071a08f1dae2d3e1c512000eef41.png  _name=name;

    ExpandedSubBlockEnd.gif }6a9c071a08f1dae2d3e1c512000eef41.png

    ExpandedSubBlockStart.gif

    ContractedSubBlock.gifpublicvoidsetSex(String sex)...{

    6a9c071a08f1dae2d3e1c512000eef41.png  _sex=sex;

    ExpandedSubBlockEnd.gif }6a9c071a08f1dae2d3e1c512000eef41.png

    ExpandedSubBlockStart.gif

    ContractedSubBlock.gifpublicString getName()...{

    6a9c071a08f1dae2d3e1c512000eef41.pngreturn_name;

    ExpandedSubBlockEnd.gif }6a9c071a08f1dae2d3e1c512000eef41.png

    ExpandedSubBlockStart.gif

    ContractedSubBlock.gifpublicString getSex()...{

    6a9c071a08f1dae2d3e1c512000eef41.pngreturn_sex;

    ExpandedSubBlockEnd.gif }6a9c071a08f1dae2d3e1c512000eef41.png

    ExpandedBlockEnd.gif}None.gif

    None.gif

    None.gif

    Parent类

    None.gifpackagexmlTest;

    None.gif

    None.gifimportjava.io.PrintWriter;

    None.gifimportjava.lang.reflect.Array;

    None.gifimportjava.util.*;

    None.gif

    ExpandedBlockStart.gif

    ContractedBlock.gifpublicclassParentextendsJXmlSerializable...{

    6a9c071a08f1dae2d3e1c512000eef41.png

    6a9c071a08f1dae2d3e1c512000eef41.pngprivateString _name;

    6a9c071a08f1dae2d3e1c512000eef41.pngprivateString _sex;

    6a9c071a08f1dae2d3e1c512000eef41.pngprivateLinkedList list=newLinkedList();

    6a9c071a08f1dae2d3e1c512000eef41.pngprivateVector vec=newVector();

    6a9c071a08f1dae2d3e1c512000eef41.pngintage;

    6a9c071a08f1dae2d3e1c512000eef41.png

    ExpandedSubBlockStart.gif

    ContractedSubBlock.gifpublicvoidsetAge(intnum)...{

    6a9c071a08f1dae2d3e1c512000eef41.png        age=num;

    ExpandedSubBlockEnd.gif    }6a9c071a08f1dae2d3e1c512000eef41.png

    ExpandedSubBlockStart.gif

    ContractedSubBlock.gifpublicintgetAge()...{

    6a9c071a08f1dae2d3e1c512000eef41.pngreturnage;

    ExpandedSubBlockEnd.gif    }6a9c071a08f1dae2d3e1c512000eef41.png

    ExpandedSubBlockStart.gif

    ContractedSubBlock.gifpublicvoidsetName(String name)...{

    6a9c071a08f1dae2d3e1c512000eef41.png        _name=name;

    ExpandedSubBlockEnd.gif    }6a9c071a08f1dae2d3e1c512000eef41.png

    ExpandedSubBlockStart.gif

    ContractedSubBlock.gifpublicvoidsetSex(String sex)...{

    6a9c071a08f1dae2d3e1c512000eef41.png        _sex=sex;

    ExpandedSubBlockEnd.gif    }6a9c071a08f1dae2d3e1c512000eef41.png

    ExpandedSubBlockStart.gif

    ContractedSubBlock.gifpublicString getName()...{

    6a9c071a08f1dae2d3e1c512000eef41.pngreturn_name;

    ExpandedSubBlockEnd.gif    }6a9c071a08f1dae2d3e1c512000eef41.png

    ExpandedSubBlockStart.gif

    ContractedSubBlock.gifpublicString getSex()...{

    6a9c071a08f1dae2d3e1c512000eef41.pngreturn_sex;

    ExpandedSubBlockEnd.gif    }6a9c071a08f1dae2d3e1c512000eef41.png

    ExpandedSubBlockStart.gif

    ContractedSubBlock.gifpublicvoidaddChild(Child child)...{

    6a9c071a08f1dae2d3e1c512000eef41.png        list.add(child);

    6a9c071a08f1dae2d3e1c512000eef41.png        vec.add(child);

    ExpandedSubBlockEnd.gif    }6a9c071a08f1dae2d3e1c512000eef41.png

    ExpandedSubBlockStart.gif

    ContractedSubBlock.gifpublicChild[] getChild()...{

    6a9c071a08f1dae2d3e1c512000eef41.png

    6a9c071a08f1dae2d3e1c512000eef41.png        Child[] aa=newChild[vec.size()];

    6a9c071a08f1dae2d3e1c512000eef41.png//list.toArray(aa);6a9c071a08f1dae2d3e1c512000eef41.pngvec.toArray(aa);

    6a9c071a08f1dae2d3e1c512000eef41.pngreturnaa;

    ExpandedSubBlockEnd.gif    }6a9c071a08f1dae2d3e1c512000eef41.png

    ExpandedSubBlockStart.gif

    ContractedSubBlock.gifpublicstaticvoidmain(String[] args)...{

    6a9c071a08f1dae2d3e1c512000eef41.png//TODO Auto-generated method stubExpandedSubBlockStart.gif

    ContractedSubBlock.giftry...{

    6a9c071a08f1dae2d3e1c512000eef41.png            Parent pat=newParent();

    6a9c071a08f1dae2d3e1c512000eef41.png            pat.setName("jack");

    6a9c071a08f1dae2d3e1c512000eef41.png            pat.setSex("male");

    6a9c071a08f1dae2d3e1c512000eef41.png            Child child1=newChild();

    6a9c071a08f1dae2d3e1c512000eef41.png            child1.setName("tom");

    6a9c071a08f1dae2d3e1c512000eef41.png            child1.setSex("male");

    6a9c071a08f1dae2d3e1c512000eef41.png            pat.addChild(child1);

    6a9c071a08f1dae2d3e1c512000eef41.png            Child child2=newChild();

    6a9c071a08f1dae2d3e1c512000eef41.png            child2.setName("Marie");

    6a9c071a08f1dae2d3e1c512000eef41.png            child2.setSex("female");

    6a9c071a08f1dae2d3e1c512000eef41.png            pat.addChild(child2);

    6a9c071a08f1dae2d3e1c512000eef41.png            pat.getChild();

    6a9c071a08f1dae2d3e1c512000eef41.png            PrintWriter out=newPrintWriter("abc.xml");

    6a9c071a08f1dae2d3e1c512000eef41.png            pat.toXmlSerial(out,0);

    6a9c071a08f1dae2d3e1c512000eef41.png            out.flush();

    6a9c071a08f1dae2d3e1c512000eef41.png

    ExpandedSubBlockStart.gif

    ContractedSubBlock.gif        }catch(Exception e)...{

    6a9c071a08f1dae2d3e1c512000eef41.png            e.printStackTrace();

    ExpandedSubBlockEnd.gif        }6a9c071a08f1dae2d3e1c512000eef41.png

    ExpandedSubBlockEnd.gif    }ExpandedBlockEnd.gif}

    类 JXmlSerializable

    None.gifpackagexmlTest;

    None.gif

    None.gifimportjava.lang.reflect.Method;

    None.gifimportjava.lang.reflect.InvocationTargetException;

    None.gifimportjava.lang.reflect.Array;

    None.gifimportjava.io.PrintWriter;

    None.gifimportjava.io.IOException;

    ExpandedBlockStart.gif

    ContractedBlock.gifpublicclassJXmlSerializable...{

    6a9c071a08f1dae2d3e1c512000eef41.png

    6a9c071a08f1dae2d3e1c512000eef41.pngpublicvoidtoXmlSerial(PrintWriter out,intnum)

    6a9c071a08f1dae2d3e1c512000eef41.pngthrowsInvocationTargetException, IllegalAccessException,

    ExpandedSubBlockStart.gif

    ContractedSubBlock.gif            IOException...{

    6a9c071a08f1dae2d3e1c512000eef41.png        out.write("<?xml  version="1.0"?>");

    6a9c071a08f1dae2d3e1c512000eef41.png        String head="";

    ExpandedSubBlockStart.gif

    ContractedSubBlock.giffor(inti=0; i

    6a9c071a08f1dae2d3e1c512000eef41.png            head+="";

    ExpandedSubBlockEnd.gif        }6a9c071a08f1dae2d3e1c512000eef41.png        out.write(head+"");

    6a9c071a08f1dae2d3e1c512000eef41.png        Method[] methods=this.getClass().getMethods();

    ExpandedSubBlockStart.gif

    ContractedSubBlock.giffor(inti=0; i

    6a9c071a08f1dae2d3e1c512000eef41.png            Class[] paras=methods[i].getParameterTypes();

    6a9c071a08f1dae2d3e1c512000eef41.png            String name=methods[i].getName();

    ExpandedSubBlockStart.gif

    ContractedSubBlock.gifif(paras==null||paras.length==0)...{

    6a9c071a08f1dae2d3e1c512000eef41.pngif((name.substring(0,3).toLowerCase().equals("get"))

    ExpandedSubBlockStart.gif

    ContractedSubBlock.gif&&!name.equals("getClass"))...{

    6a9c071a08f1dae2d3e1c512000eef41.png                    Object obj=methods[i].invoke(this,null);

    6a9c071a08f1dae2d3e1c512000eef41.png                    getMethodXmlSerial(out, obj, methods[i], num);

    ExpandedSubBlockEnd.gif                }ExpandedSubBlockEnd.gif            }ExpandedSubBlockEnd.gif        }6a9c071a08f1dae2d3e1c512000eef41.png

    6a9c071a08f1dae2d3e1c512000eef41.png        out.write(head+""+this.getClass().getName()+">");

    6a9c071a08f1dae2d3e1c512000eef41.png

    ExpandedSubBlockEnd.gif    }6a9c071a08f1dae2d3e1c512000eef41.png

    6a9c071a08f1dae2d3e1c512000eef41.pngprivatevoidgetMethodXmlSerial(PrintWriter out, Object obj, Method method,

    6a9c071a08f1dae2d3e1c512000eef41.pngintnum)throwsInvocationTargetException, IllegalAccessException,

    ExpandedSubBlockStart.gif

    ContractedSubBlock.gif            IOException...{

    6a9c071a08f1dae2d3e1c512000eef41.pngif(obj==null)

    6a9c071a08f1dae2d3e1c512000eef41.pngreturn;

    6a9c071a08f1dae2d3e1c512000eef41.png        String head="";

    ExpandedSubBlockStart.gif

    ContractedSubBlock.giffor(inti=0; i<=num; i++)...{

    6a9c071a08f1dae2d3e1c512000eef41.png            head+="";

    ExpandedSubBlockEnd.gif        }ExpandedSubBlockStart.gif

    ContractedSubBlock.gifif(obj.getClass().isArray())...{

    ExpandedSubBlockStart.gif

    ContractedSubBlock.giffor(inti=0; i

    6a9c071a08f1dae2d3e1c512000eef41.png                Object childobj=Array.get(obj, i);

    ExpandedSubBlockStart.gif

    ContractedSubBlock.gifif(childobjinstanceofJXmlSerializable)...{

    6a9c071a08f1dae2d3e1c512000eef41.png                    ((JXmlSerializable) childobj).toXmlSerial(out, num+1);

    ExpandedSubBlockStart.gif

    ContractedSubBlock.gif                }else...{

    6a9c071a08f1dae2d3e1c512000eef41.png                    getMethodXmlSerial(out, childobj, method, num);

    ExpandedSubBlockEnd.gif                }ExpandedSubBlockEnd.gif            }ExpandedSubBlockStart.gif

    ContractedSubBlock.gif        }else...{

    6a9c071a08f1dae2d3e1c512000eef41.png            out.write(head+"");

    6a9c071a08f1dae2d3e1c512000eef41.png            out.write(obj.toString());

    6a9c071a08f1dae2d3e1c512000eef41.png            out.write(""+method.getName().substring(3)+">");

    ExpandedSubBlockEnd.gif        }6a9c071a08f1dae2d3e1c512000eef41.png

    ExpandedSubBlockEnd.gif    }ExpandedBlockEnd.gif}

    编译出来还可以,能够达到我的理想。

    编译结果是

    None.gif<?xml  version="1.0"?>None.gifNone.gifjackNone.gif0None.gifmaleNone.gif<?xml  version="1.0"?>None.gifNone.giftomNone.gif0None.gifmaleNone.gifNone.gif<?xml  version="1.0"?>None.gifNone.gifMarieNone.gif0None.giffemaleNone.gifNone.gif

    谢谢like199的分享。

    今天看了看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;

    /**

    使用XML文件存取可序列化的对象的类

    * 提供保存和读取的方法

    * @author 殷晋

    * 清华大学汽车工程开发研究院@2005

    * @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;

    }

    }

    当然用Beans.instantiate也可以从文件中反序列化初对象

    展开全文
  • 摘要:将Java对象序列化成XML格式,将XML反序列化还原为Java对象。 一:创建Maven工程,引入xstream依赖: &lt;!--xstream--&gt; &lt;dependency&gt; &lt;groupId&gt;...
  • 通过Xstream可以很方便的把Java对象序列化成xml,xml反序列化成回Java对象。 1、引入jar包 [code="xml"] com.thoughtworks.xstream xstream 1.4.4 [/code] 2、Java对象序列化为...
  • java序列化成xml 方法

    千次阅读 2007-11-16 13:46:00
    怎么也没有弄明白,怎么序列化成XML文件。处入半解状态。在网上找了很多,大部分是理论上的。没有实际的例子。功夫不负有心人,终于找到了。做了下测试终于成功。忍不住记录的下来。 JXmlSerializable 是一个利用...
  • 下面小编就为大家分享一篇将Java对象序列化成JSON和XML格式的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 我这边有一个对象可以序列化成二进制文件,为什么不可以序列化成xml文件呢? public static void writeObject(Object arg) { try { File arg0 = new File(DODataSource.getConfigDBPath() + "/serialData....
  • 序列化对象 这个简单的例子示范了如何使用 XStream 序列化/逆序列化对象,包括两个类:Writer和 Reader。Writer类使用 XStream API 把 Employee类型的对象序列化为 XML 并存储到文件中(如 清单 1所示)...
  • http://www.rgagnon.com/javadetails/java-0470.html  一、Consider this simple class public class Foo { private String foo ; public void setFoo(String s) { foo = s; } p
  • 1.先定义一个Java对象Person:1 public classPerson2 {34 String name;56 intage;78 intnumber;910 publicString getName()11 {12 returnname;13 }1415 public voidsetName(String name)16 {17 ...
  • 这里比较Java对象序列化 XML JSON Kryo...我们通常以为将Java对象序列化成二进制比序列化成XML或Json更快,其实是错误的,如果你关心性能,建议避免Java序列化Java序列化有很多的要求,最主要的一个是包含能够序列...
  • 编写一个简单的java bean通过XStream序列化为XML,将XML的字符串转反序列化成java bean。一.环境准备JDK1.6+(我这里使用的1.8)eclipse(或者你自己喜欢的IDE)maven 3+二.编码使用XStream2.1创建一个普通的mav...
  • 转载:http://www.jdon.com/concurrent/serialization.html这里比较Java对象序列化 XML JSON Kryo POF等序列化性能比较。很多人以为JDK的Java序列...我们通常以为将Java对象序列化成二进制比序列化成XML或Json更快,...
  • 序列化原理无非将对象压缩字符流,需要的...下面放一个Java序列化的例子1.创建实例化对象package com.bean;import java.io.Serializable;import java.util.List;/*** @author: jane* @CreateTime: 2020/5/11* @De...
  • 1.先定义一个Java对象Person: 1 public class Person 2 { 3 4 String name; 5 6 int age; 7 8 int number; 9 10 public String getName() 11 { 12 return nam...
  • 各种Java序列化性能比较

    千次阅读 2018-06-07 14:43:37
    各种Java序列化性能比较 这里比较Java对象序列化 XML JSON Kryo POF...我们通常以为将Java对象序列化成二进制比序列化成XML或Json更快,其实是错误的,如果你关心性能,建议避免Java序列化Java序列化有很多的要求...
  • 大家一起讨论Java对象序列化与xml方法, 我试了一下XMLBeans与Castor 感觉都不好,不能很好且简单的实现Java 对象中对象的翻译成xml. 不知大家有什么好的方法。...
  • java 序列化

    2018-04-12 16:53:22
    java序列化机制Serialize接口 java本身的序列化机制存在的问题 1. 序列化数据结果比较大、传输效率比较低 2. 不能跨语言对接 以至于在后来的很长一段时间,基于XML格式编码的对象序列化机制成为了主流,一方面...
  • Java序列化和反序列化

    2019-11-24 11:22:28
    序列化和反序列化 ...而字节或者XML格式的可以还原完全相等的对象,这个相反的过程又称为反序列化Java对象的序列化和反序列化Java中,我们可以通过多种方式来创建对象,并且只要对象没有被...
  • import javax.xml.bind.JAXBContext; import javax.xml.bind.JAXBException; import javax.xml.bind.Marshaller; import javax.xml.bind.Unmarshaller; import java.io.Reader; import java.io.StringReader; import...
  • 并发主题各种Java序列化性能比较这里比较Java对象序列化 XML JSON Kryo POF等...我们通常以为将Java对象序列化成二进制比序列化成XML或Json更快,其实是错误的,如果你关心性能,建议避免Java序列化Java序列化有...
  • java序列化的优化

    2016-09-26 21:37:11
    这里比较Java对象序列化 XML JSON ...很多人以为JDK的Java序列化肯定是将Java对象转换成二进制序列化最快的方式,JDK7出来以后,我们发现实际上每次新的JDK比旧版本快。 我们通常以为将Java对象序列化成二进制比
  • Json序列化:将java bean转换成Json字符串;Json反序列化:将Json字符串转换成java bean。...xml序列化:将java bean转换成xml文件;xml反序列化:将xml文件转换成java bean。 1. xml 序列化序列化工具:simple
  • java序列化和反序列化

    2009-12-23 23:12:57
    序列化  序列化是将对象状态转换为可保持或传输的格式的过程。与序列化相对的是反序列化,它将流转换为对象。这两个过程结合起来,可以轻松地存储和传输数据。...1.对象转成xml 2.对象转成二进制文件

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 414
精华内容 165
关键字:

java序列化成xml

java 订阅