spring - 使用 XStreamMarshaller 的多个 setImplicitCollections
问题描述
我正在尝试 XStreamMarshaller。但是当我尝试解析两个 xsd:complexType 的 xml 文件时,我收到了这个错误:
class[1] : com.mc.batch.mapping.authorization.PIECES_JOINTES
converter-type[1] : com.thoughtworks.xstream.converters.reflection.ReflectionConverter
xml:
<DOCUMENT>
<ARTICLES>
<ARTICLE>
<NUMERO_ARTICLE>1</NUMERO_ARTICLE>
</ARTICLE>
<ARTICLE>
<NUMERO_ARTICLE>2</NUMERO_ARTICLE>
</ARTICLE>
</ARTICLES>
<PIECES_JOINTES>
<PIECES_JOINTE>
<TYPE_DOCUMENT>PDF</TYPE_DOCUMENT>
</PIECES_JOINTE>
<PIECES_JOINTE>
<TYPE_DOCUMENT>WORD</TYPE_DOCUMENT>
</PIECES_JOINTE>
<PIECES_JOINTE>
<TYPE_DOCUMENT>XLS</TYPE_DOCUMENT>
</PIECES_JOINTE>
</PIECES_JOINTES>
</DOCUMENT>
代码 :
@Bean
MessageConverter messageConverter() {
Map<String, Class<?>> aliases = new HashMap<>();
XStreamMarshaller marshallerAuthorization = new XStreamMarshaller();
aliases.put("DOCUMENT", DOCUMENT.class);
marshallerAuthorization.setAliases(aliases);
Map implicitArticle = Collections.singletonMap(ARTICLES.class, "ARTICLE");
Map implicitPiece = Collections.singletonMap(PIECES_JOINTES.class, "PIECES_JOINTE");
marshallerAuthorization.setImplicitCollections(implicitPiece);
marshallerAuthorization.setImplicitCollections(implicitArticle);
MarshallingMessageConverter messageConverterAuthorization = new MarshallingMessageConverter(marshallerAuthorization);
messageConverterAuthorization.setTargetType(MessageType.TEXT);
return messageConverterAuthorization;
}
但是如何使用两个setImplicitCollections
进行映射PIECES_JOINTES.class
和ARTICLES.class
我该如何解决这个冲突?欢迎任何帮助。提前致谢。
解决方案
如何使用两个 setImplicitCollections 映射 PIECES_JOINTES.class 和 ARTICLES.class
您不需要调用setImplicitCollections
两次,第二次调用中传递的值将覆盖第一次调用。此方法接受地图,因此您可以编写如下内容:
Map<Class<?>, String> implicitCollections = new HashMap<>();
implicitCollections.put(ARTICLES.class, "ARTICLE");
implicitCollections.put(PIECES_JOINTES.class, "PIECES_JOINTE");
marshallerAuthorization.setImplicitCollections(implicitCollections);
代替:
Map implicitArticle = Collections.singletonMap(ARTICLES.class, "ARTICLE");
Map implicitPiece = Collections.singletonMap(PIECES_JOINTES.class, "PIECES_JOINTE");
marshallerAuthorization.setImplicitCollections(implicitPiece);
marshallerAuthorization.setImplicitCollections(implicitArticle);
推荐阅读
- python-3.x - 从 Python 中的字符串中删除模式的子字符串
- javascript - localStorage getItem HTML5 游戏问题:无法检索字符串/数字
- powerbi - PowerBI:根据另一列中的不同值计算一列中的不同值
- ios - 如何在 iOS 上导入 WebRTC
- postgresql - 如何使用 .NET (c#) 获取 pgbouncer 统计信息
- reactjs - 如何根据屏幕大小在 React 中隐藏组件?
- c# - 使用 EntityFramework 在 C# Webapi 中格式化 JSON 响应
- timer - STM32 禁用和启用由定时器控制的 DMA 和 PWM
- reactjs - 在 useEffect 挂钩中使用 redux 数据
- python-3.x - 在 Airflow 中的 dag 之间传输信息的最佳方式是什么?