小编典典

xstream展平一个对象

java

我正在尝试使用没有运气的转换器/封送平整xstream的xml输出。例如,

public class A{
    public B b;
    public int F;
    public String G; 
}

public class B{
    public String C;
    public String D;
    public int E;
}

输出为

<A>
  <B>
     <C></C>
     <D></D>
     <E></E>
  </B>
  <F></F>
  <G></G>
</A>

但是我需要

<A>
  <C></C>
  <D></D>
  <E></E>
  <F></F>
  <G></G>
</A>

这可能吗?如何摆脱B?(C,D,E是唯一命名的)。谢谢。到目前为止,我的尝试是

...    
public void marshal(Object value, HierarchicalStreamWriter writer,
    MarshallingContext context)
{
    B b = (B) value;
    writer.startNode("C");
    writer.setValue(b.getC());
    writer.endNode();

    writer.startNode("D");
    writer.setValue(b.getD());
    writer.endNode();

    writer.startNode("E");
    writer.setValue(b.getE());
    writer.endNode();
}

阅读 241

收藏
2020-11-30

共1个答案

小编典典

根据与XStream绑定的方式,您可以使用@XmlPath批注在EclipseLink
MOXy中
非常轻松地完成此操作:

public class A{ 
    @XmlPath(".") public B b; 
    public int F; 
    public String G;  
}

public class B{ 
    public String C; 
    public String D; 
    public int E; 
}

有关基于MOXy的XPath映射的信息,请参见:

2020-11-30