<强>详解XML、Json对象,转换与Xstream的使用强>
1。Xstream的特点:
这里直接引用Xstream官方的叙述:
-
<李> <>强灵活易用强>:在更高的层次上提供了简单、灵活、易用的统一接口,用户无需了解项目的底层细节李>
<李> <>强无需映射强>:大多数对象都可以在无需映射的情况下进行序列化与反序列化的操作李>
<李> <>强高速稳定强>:设计时力求达到的最重要的指标是解析速度快,占用内存少,以使之能够适用于大的对象处理或是对信息吞吐量要求高的系统李>
<李> <>强清晰易懂强>:项目采用反射机制得到无冗余信息的XML文件。所生成的XML文件较本地Java序列化产物更简洁,格式更清晰,更便于用户阅读李>
<李> <>强无需修改强>:完全序列化包括私人和最终的类型在内的全部内部字段。支持非公有类和内部类,类可以没有缺省的构造函数李>
<李> <>强易于集成强>:通过实现特定的接口,XStream可以直接与其它任何树型结构进行序列化与反序列化操作(而不仅仅是XML格式)李>
<李> <>强灵活转换强>:转换策略是可以定制的,允许用户自定义特殊类型的对象如何以XML格式存储。李>
<李> <>强错误处理强>:由于XML资料不合法而造成异常时,会提供详细地诊断信息帮助处理问题。李>
<强> 2。初始化XStream类
强>
说Xstream简单是因为它提供统一入口,主要类Xstream用作所有项目的入口点。它将重要组件集成在一起,提供更简单易用的API操作。
我们可以使用以下的语句进行初始化操作:
默认情况下,XStream会采用可以库,可以是一种运行效率非常高的XML全解析实现。如果你不想依靠可以库的话,也可以使用一个标准的JAXP DOM解析器,可以采用以下语句进行初始化:
//不使用可以库
此xstream实例,为线程安全的,可以供多个线程进行调用,共享使用。参考com.thoughtworks.xstream.io。xml包,会发现系统提供了多种标识解析器供我们选择,包括,DomDriver, JDomDriver, StaxDriver等等。
前面提到了Xstream提供了对Json的支持,是因为Xstream内置了两个司机:
:不依赖其他类库,只实现obj→JSON
:依赖抛弃类库,实现JSON→obj或obj→JSON
,两种驱动程序在处理相同设置的对象时会得到不同的JSON串JsonHierarchicalStreamDriver得到的串更简洁,确如官网所说。
JsonHierarchicalStreamDriver有个小问题——默认输出带格式的JSON串结构中带空格,换行,并且没有提供修饰方式。
<强> 3。常用方法:
强>
xStream.toXML(对象):将对象转换成XML、Json。 xStream。outputStream toXML (obj):将对象转换XML、Json并封装成输出流。 xStream。toXML(对象、作家):将对象转换XML、Json并封成写入流。 xStream.fromXML():将XML、Json转换成对象,此方法接受文件,InputStream,读者,字符串,URL类型的参数。 xStream。别名(“新闻”,News.class):为指定类名创建别名。 xStream.useAttributeFor(新闻。类,“id”):将id设为新闻的元素的属性。 xStream。BookShelf.class aliasField(“其他”,“备注”):修改节点名称,将书架类中节的评论点名修改为。 xStream.addImplicitCollection(书架。类,“书”):去掉集体节点的父节点。 xStream。aliasAttribute(“姓名”、“姓名”):修改属性的名字为姓名。 >之前<>强4。实例1:将对象转换成XML ,
强>/* * *将对象转换成Xml格式的字符串 * @param对象要转换成Xml的对象 * @return字符串:Xml格式的字符串 */公共静态字符串convertObject2Xml(对象对象){ xStream=new xStream (); xStream。别名(“新闻”,News.class);//修改元素名称 xStream.useAttributeFor(新闻。类," id ");//将id设为新闻的元素的属性 返回xStream.toXML(对象); } >之前<强> 5。实例2:将XML象转换成对象强>
/* * *将成Xml格式的字符串转换成Java对象 * @param inputStream要转换成Java对象的inputStream * @return字符串:Xml格式的字符串 */公共静态对象convertXml2Object (InputStream InputStream) { xStream=new xStream (); xStream。别名(“新闻”,News.class);//修改元素名称 xStream.useAttributeFor(新闻。类," id ");//将id设为新闻的元素的属性 返回xStream.fromXML (inputStream);//此方法也可将xml转换成地图 }详解XML、Json对象,转换与Xstream的使用