在我看来,Java XStream 库不支持交叉委托(delegate)。我的这个信念正确吗?
所以,我可以解释我的意思,请考虑以下示例:
<node-type-x>
<node-type-y>
<a/>
<b/>
</node-type-y>
<node-type-y>
<c/>
<d/>
假设我们有一个用于“node-type-x”节点的转换器和另一个用于“node-type-y”节点的转换器。我希望在 XStream 中看到的功能是某种类型的 delegate() 方法,我可以在 node-type-x 转换器中调用该方法来识别嵌套节点类型-y 节点并将解码委托(delegate)给此类节点的转换器并返回结果,以便节点类型 x 转换器可以根据需要处理结果。就目前情况而言,XStream 似乎要求“node-type-x”转换器处理此类节点的所有子节点。
最佳答案
有两种简单的方法可以做到这一点:
- Register your node-type-y converter使用 XStream 实例,并在您的 node-type-x 转换器内,调用 marshallingContext.convertAnother(object) .
- 不要向 XStream 实例注册您的转换器,并在您的 node-type-x 转换器内调用 marshallingContext.convertAnother(object, converter) ,将您想要用于传递的“y”的转换器传递给它。
关于java - XStream不支持自定义转换器交叉委托(delegate)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6990468/