具有3个字段和请求格式的用户请求使用JSON。我要做的是使用数据映射器介体将请求转换为XML。现在,转换后,我的请求转换为XML。现在,我想向XML中的相同请求添加一个新的XML字段。任何人都可以向我建议或指导我如何使用wso2 Integration Studio实现它。
WSO2 Integration studio:-版本7.0.0积分器:-6.6.0
在来自用户的请求中,我收到3-4个JSON格式的字段,字段名称是帐号,NIC,RequestId。我将这些字段转换为xml。现在,我想将静态xml架构添加到通用XML,并且此完整的xml可以根据要求发送给我的api
下面是过程。请建议我如何实现这一目标。1.来自JSON的客户端请求。包含3-4个字段,如下所示。
{
"FIXML":{
"@schemaLocation": "http://www.finacle.com/fixml executeFinacleScript.xsd",
"Body": {
"executeFinacleScript_CustomData": {
"ACCT_NUM": "01122507576",
"PHONE_NUM": "59887834",
"NIC": "G2105493001653"
}
}
}
}
2. My endpoint need XML as a response and I want to store static XML schema somewhere. My static schema as below. which also has TimeZone and DateTime fields which I also want to update before requesting to the endpoint.
<FIXML>
<Header>
<RequestHeader>
<MessageKey>
<RequestUUID>FEBA_1553756445880
</RequestUUID>
<ServiceRequestId>executeFinacleScript
</ServiceRequestId>
<ServiceRequestVersion>10.2
</ServiceRequestVersion>
<ChannelId>COR
</ChannelId>
</MessageKey>
<RequestMessageInfo>
<BankId>04
</BankId>
**<TimeZone>GMT+05:00
</TimeZone>
<MessageDateTime>2019-03-28T11:00:45.880
</MessageDateTime>**
</RequestMessageInfo>
<Security>
<Token>
<PasswordToken>
<UserId>11111.0
</UserId>
</PasswordToken>
</Token>
</Security>
</RequestHeader>
</Header>
<Body>
<executeFinacleScriptRequest>
<ExecuteFinacleScriptInputVO>
<requestId>validateAcct.scr
</requestId>
</ExecuteFinacleScriptInputVO>
<executeFinacleScript_CustomData>
**<ACCT_NUM>01122507576
</ACCT_NUM>
<PHONE_NUM>5.9887834E7
</PHONE_NUM>
<NIC>G2105493001653
</NIC>**
</executeFinacleScript_CustomData>
</executeFinacleScriptRequest>
</Body>
</FIXML>
XML模式主体部分突出显示的字段是我要根据客户端请求(来自客户端的JSON请求)进行更新的字段,而Header部分突出显示的字段是日期时间和时区(我可以使用最近时间)
整个架构是我对端点的请求。另外,如何存储请求中使用的静态字段(帐号,Nic)以在响应块中使用它?
根据您的用例,我建议使用有效负载调解器方法,而不要使用Datamapper。请为PayloadMediator找到以下示例序列。
<payloadFactory media-type="xml">
<format>
<Person xmlns="">
<AccountNumber>$1</AccountNumber>
<NIC>$2</NIC>
<RequestId>$3</RequestId>
<static>Payload</static>
</Person>
</format>
<args>
<arg evaluator="json" expression="$.AccountNumber"/>
<arg evaluator="json" expression="$.NIC"/>
<arg evaluator="json" expression="$.RequestId"/>
</args>
</payloadFactory>
这样,您可以在xml中定义静态有效负载内联,并将json值作为参数传递。这种方法比使用Datamapper更简单,更有效。
但是如果您仍然想使用datamapper,则可以使用XSLT中介程序将新的XML字段添加到有效负载中。您可以在XSLT下面使用。
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<!-- Identity transform -->
<xsl:template match="/Person">
<xsl:copy>
<xsl:copy-of select="*"/>
<static>Payload</static>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>