我想得到这样的输出:
<MyObj>field value</MyObj>
以下是用于格式化对象MyObj的java代码,我想在xml中隐藏字段但显示字段值。
public class MyObj {
private String filed;
public String getField() {
return filed;
}
public void setField(String value) {
this.filed = value;
}
public static void main(String[] args)
{
XStream xstream = new XStream(new DomDriver("UTF-8"));
MyObj obj = new MyObj();
obj.setField("field value");
xstream.toXML(obj, System.out);
}
}
但输出是:
<MyObj>
<filed>field value</filed>
</MyObj>
答案 0 :(得分:3)
这不是不可能的。但是,请记住:这与xstream库的理念不一致,后者在bean上运行,bean通常包含多个字段。
您可以使用ToAttributedValueConverter.class
@XStreamConverter(value=ToAttributedValueConverter.class, strings={"filed"})
在类声明之前使用此注释。
在我看来,更好的是使用别的东西,比如:
<MyObj filed="field value" />
这种形式的xml可以使用注释@XStreamAsAttribute
来完成示例代码:
public class MyObj {
@XStreamAsAttribute
private String filed;
public String getField() {
return filed;
}
public void setField(String value) {
this.filed = value;
}
public static void main(String[] args)
{
XStream xstream = new XStream(new DomDriver("UTF-8"));
MyObj obj = new MyObj();
obj.setField("field value");
xstream.toXML(obj, System.out);
}
}
此解决方案的优势在于,当您将来需要添加多个字段时,您将不需要更改xml格式。
它也更快,因为此解决方案不需要转换器。