代码如下:
package com.windtec.offline.server.service.gongan;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Vector;
import org.exolab.castor.mapping.MappingException;
import org.exolab.castor.xml.MarshalException;
import org.exolab.castor.xml.Marshaller;
import org.exolab.castor.xml.Unmarshaller;
import org.exolab.castor.xml.ValidationException;
import com.windtec.framework.BusinessException;
import com.windtec.hangan.gongan.bizcontrol.PSAuditSupport;
import com.windtec.hangan.gongan.pojos.PsAuditActivitymain;
/**
* XML绑定公用服务类
* @author caoxiang
*
*/
public class CastorCommon {
//操作类对象
static PSAuditSupport pSAuditSupport;
private String name;
/**
* 初始化
*
*/
public CastorCommon() {
try {
//对象化
pSAuditSupport = new PSAuditSupport();
//异常错误处理
} catch (BusinessException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
CastorCommon ooooooooooo = new CastorCommon();
CastorCommon c = new CastorCommon();
ooooooooooo.setName("caoxiang");
c.setXmlBean(ooooooooooo,CastorCommon.class);
Object oooo = c.getXmlBean(CastorCommon.class);
CastorCommon cccc = (CastorCommon)oooo;
System.out.println(cccc.getName());
}
/**
* 返回XML绑定
* @param classobject
* @return
*/
public Object getXmlBean(Class classobject) {
//获得类名
String className = classobject.getName().substring(classobject.getName().lastIndexOf(".")+1,classobject.getName().length());
//文件名
String filename = className + ".xml";
//解析
Unmarshaller un = new Unmarshaller(classobject);
FileReader in = null;
Object c;
//Class.forName(classobject.toString()).newInstance();
//c = (classobject.newInstance())c;
try {
in = new FileReader(filename);
} catch (FileNotFoundException e) {
e.printStackTrace();
c = null;
}
CastorCommon cdsadas = null;
try {
cdsadas = (CastorCommon) un.unmarshal(in);
//System.out.println(cdsadas.getName());
} catch (MarshalException e2) {
c = null;
e2.printStackTrace();
} catch (ValidationException e2) {
e2.printStackTrace();
c = null;
}
try {
in.close();
c = null;
} catch (IOException e1) {
e1.printStackTrace();
c = null;
}
CastorCommon cc = (CastorCommon)c;
//返回
return cdsadas;
}
/**
* 设置XML绑定
* @param object
* @param classobject
* @return
*/
public boolean setXmlBean(Object object, Class classobject) {
//获得类名
String className = classobject.getName().substring(classobject.getName().lastIndexOf(".")+1,classobject.getName().length());
String filename = className + ".xml";
File file = new File(filename);
Writer writer = null;
try {
writer = new FileWriter(file);
} catch (IOException e) {
e.printStackTrace();
}
//判断是否为null
if(writer == null) {
return false;
}
try {
Marshaller.marshal(object, writer);
return true;
} catch (MarshalException e1) {
e1.printStackTrace();
return false;
} catch (ValidationException e1) {
e1.printStackTrace();
return false;
}
}
//==================================================================================================================================
/**
* 设置BEAN到流中
* @param vector
* @return
*/
public boolean setBean(Vector vector,A a,Map m) {
try {
//对象初始化
CastorBean castorBean = new CastorBean();
//设置
castorBean.setMmmp(m);
castorBean.setA(a);
castorBean.setVname("a");
castorBean.setGonganVector(vector);
File file = new File("castor.xml");
Writer writer = new FileWriter(file);
Marshaller.marshal(castorBean, writer);
Unmarshaller un = new Unmarshaller(CastorBean.class);
FileReader in = new FileReader("castor.xml");
CastorBean c = (CastorBean) un.unmarshal(in);
in.close();
System.out.println(c.getA().getUsername());
System.out.println(c.getVname());
System.out.println("ddd " + c.getMmmp().get("b"));
B b = (B)c.getMmmp().get("b");
System.out.println(b.getA().getUsername()+ " dddddddddd");
Vector v = c.getGonganVector();
Iterator vvv = v.iterator();
while(vvv.hasNext()) {
Map n = new HashMap();
n = (Map) vvv.next();
System.out.println(n.isEmpty());
}
//Map map = (Map) v.get(0);
//System.out.println(v.get(0));
// Iterator i =c.getGonganVector().iterator();
// while(i.hasNext()) {
// //Map castorBean2 = (Map) i.next();
// //B b = (B) castorBean2.get("b");
// //System.out.println(b.getBname());
// }
//System.out.println("ddd "+c.getGonganVector().size());
//System.out.println(map.get("b"));
return true;
} catch(Exception e) {
e.printStackTrace();
return false;
}
}
/**
*
* @param argv
*/
public static void main2222(String[] argv) {
A a = new A();
a.setUsername("caoxiang");
a.setPassword("123456");
B b = new B();
b.setBname("linlin");
b.setA(a);
Map map = new HashMap();
map.put("b",b);
VectorBase vb = new VectorBase();
vb.setMap(map);
CastorCommon cccc = new CastorCommon();
cccc.setBean(vb,a,map);
}
/**
* 转换为XML文件
* @param argv
* @throws IOException
* @throws MarshalException
* @throws ValidationException
* @throws MappingException
* @throws BusinessException
*/
public static void main2(String[] argv)
throws
IOException,
MarshalException,
ValidationException,
MappingException,
BusinessException {
PSAuditSupport pSAuditSupport = new PSAuditSupport();
PsAuditActivitymain psAuditInspectoractivity =
new PsAuditActivitymain();
psAuditInspectoractivity =
(PsAuditActivitymain) pSAuditSupport
.inspectoractivityDAO
.find("select p from PsAuditActivitymain p")
.get(0);
File file = new File("user_temp.xml");
Writer writer = new FileWriter(file);
Marshaller.marshal(psAuditInspectoractivity, writer);
Unmarshaller un = new Unmarshaller(PsAuditActivitymain.class);
//un.setMapping(mapping);
FileReader in = new FileReader("user_temp.xml");
PsAuditActivitymain c = (PsAuditActivitymain) un.unmarshal(in);
if (c != null) {
System.out.println("pk:" + c.getPk());
System.out.println(c.getInitActivity().getPk());
}
in.close();
}
/**
* @return
*/
public String getName() {
return name;
}
/**
* @param string
*/
public void setName(String string) {
name = string;
}
}