让我解释一下我的场景:我有一个web应用程序,它接受xml请求并响应。我使用jaxb解析请求,将其转换为我的应用程序dao对象,处理请求,然后将dao结果重新转换为jaxb对象并返回该对象。现在我必须支持多个版本(不同的xml版本可以根据请求提供,我必须用合适的xml响应来响应)。我为jaxb object->dao object convertor和reverse生成java文件。问题是,在转换到我的dao对象之前,jaxb对象被创建,然后在传递给我的转换器之前被验证。我不确定在这里应用什么样的设计模式。可能是适配器模式。请建议?如果我可能还需要生成jaxb编组和取消编组代码,也可以这么说吗?
1条答案
按热度按时间xxb16uws1#
希望我能很好地理解你的问题。所以你已经有了:
现在需要修改一种新的xml格式。
为此,您可以编写新的转换器以支持新格式:
或者编写一些xml适配器,使新的jaxb对象适应第一种格式:
我建议第一种方法:编写一个新的转换器,这样新的格式就不依赖于第一种格式(以防可能需要停用第一种格式)。
转换器将自身与jaxb对象混合,作为实体对象和
@XmlJavaTypeAdapter
对于复杂类型。一个非常简单的例子:这个
@XmlJavaTypeAdapter
自身应该从Address
到XmlAddress
.如果我可能还需要生成jaxb编组和取消编组代码,也可以这么说吗?
您只需要将xml对象传递给marshaller并验证
xsd
你可能已经在用解编器了:元帅:
解组: