MuleSoft - 一对多 xml 文件输出

MuleSoft - one to many xml file output

这里是 MuleSoft 的新手,使用他们的 AnyPoint Studio IDE。开始了解如何将数据从不同的输入流向不同的输出,并将其映射到不同的输出。

有一个挥之不去的问题我不太明白。我如何根据某些数据库查询生成 XML 文件,以便生成的 XML 文件正确填充一对一数据元素,同时还填充无限数据元素?

示例: 假设我们的客户具有一对一的元素,例如客户 ID 和邮政编码。但他们有多张信用卡与之关联。通过 SQL,您可以正确加入以列出每张信用卡的客户所有者。

但是,XML 的输出我希望看起来像这样:

<customer>
    <name>Bill</name>
    <custID>123456789</custID>
    <zipcode>99999</zipcode>
    <CreditCard>
        <creditType>Visa</creditType>
        <cardNumber>123456789</cardNumber>
    </CreditCard>
    <CreditCard>
        <creditType>AmericanExpress</creditType>
        <cardNumber>987665431</cardNumber>
    </CreditCard>
    <CreditCard>
        <creditType>MasterCard</creditType>
        <cardNumber>11111111111</cardNumber>
    </CreditCard>
</customer>

你必须为此使用多个查询吗?例如,运行 针对拉取该个人客户的数据库的某个查询,然后 运行 针对拉取基于该客户的所有卡信息的数据库的第二个查询?从那里,以某种方式 "merge" 将数据放入单个 XML 文件中?

努力了解如何设置流程并生成这样的 xml 文件。我要避免的是客户数据的重复,例如下面的示例:

<customer>
    <name>Bill</name>
    <custID>123456789</custID>
    <zipcode>99999</zipcode>
    <CreditCard>
        <creditType>Visa</creditType>
        <cardNumber>123456789</cardNumber>
    </CreditCard>
</customer>

<customer>
    <name>Bill</name>
    <custID>123456789</custID>
    <zipcode>99999</zipcode>
    <CreditCard>
        <creditType> MasterCard </creditType>
        <cardNumber>11111111111</cardNumber>
    </CreditCard>
</customer>
<customer>
    <name>Bill</name>
    <custID>123456789</custID>
    <zipcode>99999</zipcode>
    <CreditCard>
        <creditType> AmericanExpress </creditType>
        <cardNumber>987665431</cardNumber>
    </CreditCard>
</customer>

如有任何帮助,我们将不胜感激!

您可以在流程中使用 custom transformers. I suppose you are using db connector in order to get customer's bank information which return a Map. Using custom transformers you can receive this Map as a Payload, build the xml as you want or using a wrapper which return a custom object (similar to xml structure) and after that use a object to xml transformer

这很简单.. 如果您想将 XML 合并到一个 xml 文件中,您可以为此使用 XSLT ... Mule XSLT 转换器将采用 xml作为输入,并将生成最终的 xml 作为输出,它将将该数据合并到单个 XML 文件中。

尝试使用 Mule XSLT 转换器:- http://www.mulesoft.org/documentation/display/current/XSLT+Transformer