比如有对象:
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 +">";

解决方案 »

  1.   

    fld[i].get(user).toString();
    不过写XML一般都不会这样写的吧
      

  2.   

    我是使用他实现客户端无刷新页面,把数据库取过来的数据转换为xml格式返回给客户端。复杂的用户操作可以极大减少和服务器交互的次数。to fog628(无名): 有更好的办法组装吗?
      

  3.   

    用javax.xml.transform.Transformer来写XML应该会好点public void transform(Source xmlSource, Result outputTarget)
                                     throws TransformerException
    param 1: 可以是DOMSource, SAXSource
    param 2: 输出目标具体的去网上或找资料吧
      

  4.   

    javax.xml.transform.Transformer都是需要操作xml文件的。我是把数据库读过来对象直接转换成xml字符串传给客户端。如果还要进行一次写文件。效率太慢了。
      

  5.   

    to dutousuan(独头蒜) :能给个例子吗
      

  6.   

    Arch newObject = new Arch();
    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就是串行化 反串行化的方法