xstream 转java_xstream转换xml和Java对象

源代码可看:https://pan.baidu.com/s/1jniElgsZ4g39ISz1Vl5U-g ,里面有xstream.jar包

结构显示样式:

2233cb5c87a3d392a219645a9a3ca609.png

ItemInterface类:

public class ItemInterface {

private String Sender = "";

private String Receiver = "";

private String Billtype = "";

private VectorItems = new Vector<>();

public ItemInterface( VectorItems ){

this.Items = Items;

}

get.....

set....

}

Item类:

public class Item {

private String CHILD_ID = "";

private String REV_ID = "";

private String CHILD_NAME = "";

private String MATERIAL = "";

private ItemForm ITEM_FORM = null;

public Item (String CHILD_ID,String REV_ID,String CHILD_NAME,String MATERIAL,ItemForm ITEM_FORM){

this.CHILD_ID = CHILD_ID;

this.REV_ID = REV_ID;

this.CHILD_NAME = CHILD_NAME;

this.MATERIAL = MATERIAL;

this.ITEM_FORM = ITEM_FORM;

}

get.....

set....

}

ItemForm类:

public class ItemForm {

private String OWNER_USER = "";

private String OWNER_GROUP = "";

private String UNIT = "";

public ItemForm(String OWNER_USER,String OWNER_GROUP,String UNIT){

this.OWNER_USER = OWNER_USER;

this.OWNER_GROUP = OWNER_GROUP;

this.UNIT = UNIT;

}

get.....

set....

}

xstream序列转换:

public class Serialize {

private static String xmlHead = "\n";

/**

*

Description: 将ItemInterface对象序列化为XML信息并生成XML文件

* */

public static void serializeItemsToXMLFile(ItemInterface iteminterface , String xmlpath) throws Exception{

//1.XmlFriendlyNameCoder当类中名称有单下划线的时候,转成XML时候会变成双下划线,如BOM对象中的CHILD_ID,则转换成XML标签时候则为CHILD__ID

//解决单下划线变双下划线的方法就是使用XmlFriendlyNameCoder,如XmlFriendlyNameCoder("-_", "_")

XStream iteminterfaceXS = new XStream(new DomDriver("UTF-8",new XmlFriendlyNameCoder("-_","_")));

//2.对自定义的类名或者变量名创建别名以对应生成的XML元素名称更加简洁(可选)

//如Item.class不定义,则标签为,如果定义别名为ITEM,则标签显示为iteminterfaceXS.alias("Interface", ItemInterface.class);

iteminterfaceXS.alias("ITEM", Item.class);

//3.自定义标签,如将ItemInterface中VectorItems的Item中ITEMFORM的 ITEM_FORM的标签改为//iteminterfaceXS.aliasField("FORM", Item.class, "ITEM_FORM");

//4.useAttributeFor为标签定义属性,如为TTEMS对应标签Interface标签定义属性Sender,则标签显示为iteminterfaceXS.useAttributeFor(ItemInterface.class, "Sender");

iteminterfaceXS.useAttributeFor(ItemInterface.class, "Receiver");

iteminterfaceXS.useAttributeFor(ItemInterface.class, "Billtype");

//5.addImplicitCollection该方法的作用是引入隐含集合(Implicit Collection),即某个类包含集合(Vector等)字段,

//引入隐含集合方法可以在生成的XML中并不显示集合字段的标签。

//如想将类中Items Vecotr对应的标签隐藏掉(隐掉的效果是否则将显示)

iteminterfaceXS.addImplicitCollection(ItemInterface.class, "Items");

//6.toXML(Object obj, Writer out)将对象以XML内容形式写入文件中,生成XML文件

PrintWriter writer = new PrintWriter(xmlpath,"UTF-8");

writer.write(xmlHead);

iteminterfaceXS.toXML(iteminterface, writer);

writer.flush();

writer.close();

}

/**

*

Description: 将ITEMInterface对象序列化为XML字符串

* */

public static String serializeItemsToXMLStr(ItemInterface iteminterface){

XStream iteminterfaceXS = new XStream(new DomDriver("UTF-8",new XmlFriendlyNameCoder("-_","_")));

iteminterfaceXS.alias("Interface", ItemInterface.class);

iteminterfaceXS.alias("ITEM", Item.class);

iteminterfaceXS.aliasField("ITEM_FORM", Item.class, "FORM");

iteminterfaceXS.useAttributeFor(ItemInterface.class, "Sender");

iteminterfaceXS.useAttributeFor(ItemInterface.class, "Receiver");

iteminterfaceXS.useAttributeFor(ItemInterface.class, "Billtype");

iteminterfaceXS.addImplicitCollection(ItemInterface.class, "Items");

return xmlHead+iteminterfaceXS.toXML(iteminterface);

}

/**

*

Description: 将包含ITEM信息的XML文件反序列化为ItemInterface对象

* */

public static ItemInterface unserializeXMLFileToItems(String xmlpath){

XStream iteminterfaceXS = new XStream(new DomDriver("UTF-8",new XmlFriendlyNameCoder("-_","_")));

iteminterfaceXS.alias("Interface", ItemInterface.class);

iteminterfaceXS.alias("ITEM", Item.class);

iteminterfaceXS.aliasField("ITEM_FORM", Item.class, "FORM");

iteminterfaceXS.useAttributeFor(ItemInterface.class, "Sender");

iteminterfaceXS.useAttributeFor(ItemInterface.class, "Receiver");

iteminterfaceXS.useAttributeFor(ItemInterface.class, "Billtype");

iteminterfaceXS.addImplicitCollection(ItemInterface.class, "Items");

ItemInterface iteminterface = (ItemInterface) iteminterfaceXS.fromXML(new File(xmlpath));

return iteminterface;

}

/**

*

Description: 将包含ITEM信息的XML字符串反序列化为ItemInterface对象

* */

public static ItemInterface unserializeXMLStrToItems(String xmlstr){

XStream iteminterfaceXS = new XStream(new DomDriver("UTF-8",new XmlFriendlyNameCoder("-_","_")));

iteminterfaceXS.alias("Interface", ItemInterface.class);

iteminterfaceXS.alias("ITEM", Item.class);

iteminterfaceXS.aliasField("ITEM_FORM", Item.class, "FORM");

iteminterfaceXS.useAttributeFor(ItemInterface.class, "Sender");

iteminterfaceXS.useAttributeFor(ItemInterface.class, "Receiver");

iteminterfaceXS.useAttributeFor(ItemInterface.class, "Billtype");

iteminterfaceXS.addImplicitCollection(ItemInterface.class, "Items");

ItemInterface iteminterface = (ItemInterface) iteminterfaceXS.fromXML(xmlstr);

return iteminterface;

}

public static void main(String[] args) {

// TODO Auto-generated method stub

try {

Item item1 = new Item("000000001","A","工艺","钢",new ItemForm("liuxz","dba","个"));

Item item2 = new Item("000000002","A","文档","纸质",new ItemForm("liuxz","dba","张"));

Vectoritems = new Vector<>();

items.add(item1);

items.add(item2);

ItemInterface iteminterface = new ItemInterface(items);

Serialize.serializeItemsToXMLFile(iteminterface, "C:/ITEM.XML");

System.out.println(Serialize.serializeItemsToXMLStr(iteminterface));

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值