Java xstream展平对象
我正在尝试使用转换器/封送处理来平坦xstream的xml输出,但运气不好。比如说,Java xstream展平对象,java,xml,xml-serialization,xstream,Java,Xml,Xml Serialization,Xstream,我正在尝试使用转换器/封送处理来平坦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>
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>
我找到了一个暂时的解决办法,尽管它不是最好的 如果我将canConvert函数设置为检查周围对象A而不是B,我可以操纵整个内部对象
public boolean canConvert(Class c)
{
return A.class == c;
}
因为我必须定义所有的类A,所以这需要做更多的工作,尤其是在真正的XML对象中,而不是我设计的示例。
有人知道只在内部类B上使用转换器获得相同结果的方法吗
public boolean canConvert(Class c)
{
return B.class == c;
}
根据您与XStream的联系程度,您可以通过使用@XmlPath注释轻松做到这一点:
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的映射的信息,请参阅:
谢谢,但是在将现有代码切换到MOXy之前,我希望在XStream中找到一个同样好的解决方案,我只是不知道这个问题。如果您想移植,请随时与我联系:。查看我的博客文章,比较JAXB和XStream:
public boolean canConvert(Class c)
{
return B.class == c;
}
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;
}