xStream javaBean转为xml时,怎么保留空节点

目前当javaBean中属性name没有值时,转为xml后就没有name这个节点了。我需要的是,即便属性name没有值,转换后的xml也保留name这个节点,如<name... 目前当javaBean中属性name没有值时 ,转为xml后就没有name这个节点了。

我需要的是,即便属性name没有值,转换后的xml也保留name这个节点,如<name/>
展开
 我来答
百度网友12ee0fd
2015-08-20 · TA获得超过4.7万个赞
知道大有可为答主
回答量:1.1万
采纳率:66%
帮助的人:1960万
展开全部

使用一个自定义的Converter:

public class Student{
   String name;
   int age;
   String teacher;
   public void setName(String name){
       this.name = name;
   }
   public String getName(){
      return name;
   }
.......
......//Like that mention other getter and setter method
}
public class StudentConverter implements Converter{
    public boolean canConvert(Class clazz) {
         return clazz.equals(Test.class);
    }
    public void marshal(Object value, HierarchicalStreamWriter writer,
         MarshallingContext context) {
       Student student = (Student ) value;
       writer.startNode("name");
       writer.setValue(test.getName());
       writer.endNode();
       writer.startNode("age");
       writer.setValue(test.getAge());
       writer.endNode();
       writer.startNode("teacher");
       String teacher = test.getTeacher();
       if(teacher == null) 
           writer.setValue("");
       else 
           writer.setValue(teacher);
       writer.endNode();
   }
    public Object unmarshal(HierarchicalStreamReader reader,
         UnmarshallingContext context) {
       Student student = new Student();
       test.setName(reader.getNodeName());
       test.setAge(reader.getNodeName());
       test.setTeacher(reader.getNodeName());
       return student;
    }
}



public class App1{
    public static void main(String args[]) {
        XStream stream = new XStream(new StaxDriver());
        Student st = new Student();
        st.setName("ABC");
        t.setAge(21);
        stream.registerConverter(new StudentConverter());
        stream.alias("student", Student.class);
        System.out.println(stream.toXML(st));
   }

}
QQMSD8
2015-08-20 · 知道合伙人软件行家
QQMSD8
知道合伙人软件行家
采纳数:6788 获赞数:13239
没有做不到,只有想不到,帮助别人的同时也是对自己的提升

向TA提问 私信TA
展开全部
之前我也是用XStream这个框架的,默认就是会这样啊
或者建议你在这个实体类的字段中给个初始值
例如String name = "";
这样就肯定有了
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式