88.4. 使用带有 Dozer 的数据格式
Dozer 不支持非 Java 源和目标进行映射,例如,无法将 XML 文档映射到其自身上的 Java 对象。幸运的是,Camel 广泛支持 Java 和各种格式使用 数据格式。Dozer 组件通过允许您指定在通过 Dozer 处理前,应通过数据格式传递输入和输出数据。在向 Dozer 组件之外,您可以自行执行此操作,但直接在 Dozer 组件中支持它,您可以使用单个端点在 Camel 中配置任意转换。
例如,假设您要使用 Dozer 组件在 XML 数据结构和 JSON 数据结构之间进行映射。如果您在 Camel 上下文中定义以下数据格式:
<dataFormats> <json library="Jackson" id="myjson"/> <jaxb contextPath="org.example" id="myjaxb"/> </dataFormats>
<dataFormats>
<json library="Jackson" id="myjson"/>
<jaxb contextPath="org.example" id="myjaxb"/>
</dataFormats>
然后,您可以使用 JAXB 数据格式将 Dozer 端点配置为 unmarshal 输入 XML,并使用 Jackson 处理映射输出。
<endpoint uri="dozer:xml2json?marshalId=myjson&unmarshalId=myjaxb&targetModel=org.example.Order"/>
<endpoint uri="dozer:xml2json?marshalId=myjson&unmarshalId=myjaxb&targetModel=org.example.Order"/>