将单个xml转换为多个文档

时间:2014-03-06 14:23:22

标签: mule mule-studio

我必须在两个xsd模式之间创建一个映射,其中输入文档包含元素的列表(序列),每个元素都映射到单个输出文档。此外,每个输出文档应包括不是列表一部分的顶级输入数据。为了说明问题,输入文档包含有关客户的数据(联系信息等)和发票清单,输出应该是多个文档,每个文档包含一个发票和客户数据。

我能以某种方式使用DataMapper或其他方法吗?如果我在输入列表元素和输出文档之间创建映射,DataMapper将输出所有创建的输出文档的聚合。我似乎也无法从“列表元素到输出文档”映射中引用输入顶级元素。

1 个答案:

答案 0 :(得分:0)

假设源XSD中的根元素包含“Item”元素列表,您可以先将文档拆分为Items:

<splitter expression="#[xpath('//Item')]" doc:name="Splitter" enableCorrelation="IF_NOT_SET"/>

然后在拆分器之后使用DataMapper将Item元素映射到其他XSD中的目标元素。 DataMapper要求“Item”也是源XSD中的根元素,以便从XSD到XSD进行映射。如果不可能/希望在源XSD中将“Item”作为根元素,那么您可以创建一个示例XML并使用DataMapper从中生成XSD。否则,您可以使用自己的变压器或使用XSLT变压器。