0

由于遗留(不幸)的原因,我们对 2 种不同的表示具有相同的 xml 根。使用 xstream,我们如何让 unmarshaller 在解组时使用我们需要的类。

我正在考虑传递一些上下文(通过 ThreadContext),以便 xstream 在解组期间使用该信息来选择正确的类,尽管我不确定从哪里开始。任何建议都非常感谢。

笔记:

  • 两个 XML 的根标签相同
  • 根标签上没有其他信息(属性)可用于区分 2 个表示
  • 由于遗留原因,无法更改 xml

理想情况下,我希望该解决方案可以与 Spring-OXM 一起使用,但如果需要,我会采取捷径

4

1 回答 1

0

您事先知道要解析两种表示中的哪一种。

因此,您可以在开始时创建 xStream 的两个实例,并为它们中的每一个配置不同的转换器和别名,并为每个表示使用一个实例。

在我看来,这种方法比设置一个全局上下文变量,然后在转换器中放置一堆if,并处理潜在的歧义更清晰、更可控。

于 2015-12-19T22:16:59.913 回答