比如有对象:
class User
{
public String name;
public int sex;
}
User user = new User;
user.name="测试";
user.sex=0;想通过reflect转换为xml字符串:<user><name>测试</name><sex>0</sex></user>
如何实现?
String classname = user.getClass().getName();
Class cls = Class.forName(classname);
String shortclass = classname.substring(classname.lastIndexOf(".")+1);
String xmlStr = "<"+shortclass +">";
Field fieldlist[] = cls.getDeclaredFields();
for (int i = 0; i < fieldlist.length; i++) {
Field fld = fieldlist[i];
xmlStr += "<"+fld.getName()+">";
xmlStr += ??;//这里如何取到fld的值???
xmlStr += "</"+fld.getName()+">";
}
xmlStr += "</"+shortclass +">";
class User
{
public String name;
public int sex;
}
User user = new User;
user.name="测试";
user.sex=0;想通过reflect转换为xml字符串:<user><name>测试</name><sex>0</sex></user>
如何实现?
String classname = user.getClass().getName();
Class cls = Class.forName(classname);
String shortclass = classname.substring(classname.lastIndexOf(".")+1);
String xmlStr = "<"+shortclass +">";
Field fieldlist[] = cls.getDeclaredFields();
for (int i = 0; i < fieldlist.length; i++) {
Field fld = fieldlist[i];
xmlStr += "<"+fld.getName()+">";
xmlStr += ??;//这里如何取到fld的值???
xmlStr += "</"+fld.getName()+">";
}
xmlStr += "</"+shortclass +">";
不过写XML一般都不会这样写的吧
throws TransformerException
param 1: 可以是DOMSource, SAXSource
param 2: 输出目标具体的去网上或找资料吧
newObject = Arch.unmarshal(new StringReader(formData));
Arch newclass=new Arch();
Arch newObject=new Arch();
String str="<?xml version='1.0' encoding='gb2312'?>";
str=str+
"<Arch>"+
"<Id>1</Id>"+
"<Ca>0</Ca>"+
"</Arch>";
try
{
newObject=Arch.unmarshal(new StringReader(str));
System.out.println(newclass.Arch(newObject));
}
catch(Exception ex)
{
ex.printStackTrace();
}marshal unmarshal就是串行化 反串行化的方法