Mule 将单个xml转换为多个文档

Mule 将单个xml转换为多个文档,mule,mule-studio,Mule,Mule Studio,我必须在两个xsd模式之间创建一个映射,其中输入文档包含一个元素列表(序列),每个元素映射到一个输出文档。此外,每个输出文档都应该包含不是列表一部分的顶级输入数据。为了说明问题,输入文档包含有关客户的数据(联系信息等)和发票列表,输出应该是多个文档,每个文档包含一张发票和客户数据 我可以使用DataMapper或其他方法来实现这一点吗?如果在输入列表元素和输出文档之间创建映射,DataMapper将输出所有已创建输出文档的聚合。似乎我也无法从“list element to output doc

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


我可以使用DataMapper或其他方法来实现这一点吗?如果在输入列表元素和输出文档之间创建映射,DataMapper将输出所有已创建输出文档的聚合。似乎我也无法从“list element to output document”映射中引用输入顶级元素。

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

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


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

修改XSD:s不是一个选项,因为它们是国家/国际标准。它们也是相当大和复杂的文档,因此我希望尽可能使用原始的xsd:s和DataMapper来避免错误。到目前为止,我认为最好的方法是分别解析客户信息,并使用根元素名称拆分DataMapper生成的聚合输出字符串。