我想把一个对象序列化成XML格式的文本,下面是我的程序:
public class Station implements    Serializable{
public String ID;
public String Name;}
public class XmlUtil {
public static String ToXmlText(Object obj) 
 {   
ByteArrayOutputStream bos= new ByteArrayOutputStream();  XMLEncoder encoder = new XMLEncoder(bos);   
encoder.writeObject(obj); 
encoder.flush();  
encoder.close(); 
return bos.toString();
 }  
}
    public static void main(String[] args) throws SecurityException, NoSuchFieldException
{
StationFactory rf=new StationFactory();
Station s=new Station();
s.ID="001";
s.Name="s1";
String info=XmlUtil.ToXmlText(s);
System.out.println(info);
}
输出:
<?xml version="1.0" encoding="UTF-8"?> 
<java version="1.5.0_04" class="java.beans.XMLDecoder"> 
 <object class="roi.Station"/> 
</java> 问题:
为什么没有ID 和 Name 的内容?
如何才能有ID 和 Name 的内容?

解决方案 »

  1.   

    Station 类改成
    public class Station implements    Serializable{ 
    public String id; 
    public String name; public void setId(String id){
      this.id=id;
    }
    public String getId(){
    return id;
    }
    public void setName(String name){
      this.name=name;
    }
    public String getName(){
    return name;
    }
    }
    注意id,name小写。初始化时改成这样:
    StationFactory rf=new StationFactory(); 
    Station s=new Station(); 
    s.setId("001");
    s.setName("s1"); 
    String info=XmlUtil.ToXmlText(s); 
    System.out.println(info); 
      

  2.   

    为什么要小写呢? 还有,我也想把属性成员写成get,set的形式,但我想为这些属性设置annotion,
    成员就一个好设置,属性是两个函数(get,set)annotion怎么设置呢?
      

  3.   

    XmlEncoder是用setter和getter方法定位对象的变量很多反射机制中都是用setter和getter反推变量名字,如果你的name是大写NAME,
    setNAME(...)很容易把变量认为是nAME你设置annotion是想做什么?
      

  4.   

    好了,我知道怎么用了,我习惯了C#的思路,学java总觉得别扭,希望以后多多指点。