XStream的使用实例
????? 之前发了几篇文章几乎都是代码的,我大学快要毕业了,最近在公司里实习,有两个月不到的样子,之前在大学里也是菜鸟一个,什么也不会,进公司了,学习的机会挺多的,所以将学到的那些东西都记下来,怕是以后忘了还能再回来看看。
如果大家有什么好的意见和建议都可以提示出来。
???? 在与其他公司接口方面,有用到XStream这个类。想说也跟着写些小实例。XStream是一套简单实用的类库,用于序列化对象与XML对象之间的相互转换,其他都不多说,下面开始做实例喽!
???? 首先可以写一个XML文件edie.xml。其内容可以如下格式书写:
?根据XMl文件的书写格式,我们可以新建几个JavaBean,一个是Info.java
?由于XML文件中,Info标签里Details是有多个的,因此在Info类中将Details定义成List。
如此一来,我们就应该明白,应该再新建一个Detail.java
?在XML文件中,我有定义两个属性,一个是author,一个是version。这两个我是分别写了两个bean,下面是Author.java
?
Version.java
?
最后要写一函数来运行一下。ParseXML.java
?
在程序中,我们可以看到,是用FileInputStream来读XML文件的,是将xml文件以流的行式读出来,放在BufferReader里面。还有一点即是我将xstream.aliasField()都注释掉了,因为在javabean中,属性的命名和XML文件中命名一样。如果不一样,则需要用aliasField来映射。
Info的两个属性名,在这里我是写了两个Converter来转换的。AuthorConverter.java
package org.mm;import org.mm.bean.Version;import com.thoughtworks.xstream.converters.SingleValueConverter;public class VersionConverter implements SingleValueConverter { @Override public boolean canConvert(@SuppressWarnings("rawtypes") Class type) { return type.equals(Version.class); } @Override public Object fromString(String version) { return new Version(version); } @Override public String toString(Object obj) { return ((Version) obj).getVersion(); }}?