xstream,如何隐藏隐藏类的字段名称但显示字段的值(Java)

时间:2012-03-22 05:50:02

标签: java xstream

我想得到这样的输出:

<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>

1 个答案:

答案 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格式。

它也更快,因为此解决方案不需要转换器。