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

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

最佳答案

这并非不可能。但是,请记住:这与 xstream 库的理念不一致,它对通常包含多个字段的 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 格式进行太多更改。

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

关于java - xstream,如何隐藏隐藏类的文件名称但显示字段的值(Java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9817115/

相关文章:

java - 重定向后重做原始请求 getRequestDispatcher

java - MongoDB中计算的分组字段

java - XStream 中的单个元素数组错误

java - 每个值的迭代运行多次 LinkedHashMap

java - XStream 序列化集合

Java/Groovy 如何正确比较两个字符串值? .equals() 不工作

java - 没有父 ID 作为外键的子表 - JPA/Hibernate

java - Spring Web MVC HttpRequest 无法正常运行

java - 使用 Xstream 是可能的序列化方法吗?

xml - 自定义 XStream 输出