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
这里是 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