我为XSLT
创建了一个WL.Server.invokeHttp
,它以XML格式从后端服务器获取数据并成功执行转换。此适配器用于从后端服务器获取数据。
但是在以XML格式向服务器发送数据时,由于我将适配器中的数据作为JSON获取,我需要使用XSLT将其转换为XML。
在ibm worklight适配器中是否有任何规定我可以对输入请求执行XSLT转换,就像我从后端服务器获取响应时可以轻松完成的那样。
我在这里解释返回数据(即响应)
例如,
如果我想获取所有员工的数据,我将调用一个适配器,即getEmpDetails
,它以XML格式返回数据,但我不想显示从后端服务器返回的所有字段,所以我使用XSLT过滤特定数据,我的移动应用程序在JSON中使用它,所以我也转换为JSON格式。
来自服务器的数据
<Employee>
<EmpName>Jhon Methew</EmpName>
<EmpId>1234</EmpId>
<EmpDepartment>Accounts</EmpDepartment>
</Employee>
<Employee>
<EmpName>James</EmpName>
<EmpId>4434</EmpId>
<EmpDepartment>Sales</EmpDepartment>
</Employee>
<Employee>
<EmpName>Anna</EmpName>
<EmpId>3344</EmpId>
<EmpDepartment>Business Development</EmpDepartment>
</Employee>
通过在适配器中分配XSLT进行转换后,我得到了以下数据
"array":{
"employee":[{
"empname":"John Methew",
"empdept":"Accounts"
},{
"empname":"Anna",
"empdept":"Business Development"
}],
}
现在,如果我想通过createEmp
adatper添加新员工,那么我需要从移动设备传递JSON格式的输入请求以创建新员工,我的适配器需要将此请求转换为XML(此处,我想要一个XSLT过滤器,就像我在getEmpDetails
适配器中一样。)
输入创建员工的请求
"employee":{
"empname":"Rahul",
"empdept":"Softwares",
"empid":"4233",
"emppay":"20k"
}
适配器将接受响应,并需要将上面的JSON输入请求转换为XML,所以我问工作灯是否有任何规定来转换传入的请求?
<Employee>
<EmpName>Rahul</EmpName>
<EmpId>4233</EmpId>
<EmpDepartment>Softwares</EmpDepartment>
<EmpPayment>20K</EmpPayment>
</Employee>
答案 0 :(得分:1)
XSLT没有将XML转换为JSON。 XSLT将XML转换为另一种XML而不是JSON。
一旦您的适配器从后端检索XML,WL服务器基础结构将自动将其转换为JSON。如果您定义了XSLT,则从后端检索的原始XML将首先根据XSLT转换为新的XML,然后将新的XML转换为JSON。
在WL适配器中没有可以将JSON对象转换为XML字符串的开箱即用的API。你可以在这里遵循两种不同的方法
使用第三方Java / JavaScript库将JSON转换为XML,例如https://code.google.com/p/x2js/或http://www.json.org/java/。您可以在此处阅读有关在适配器中使用Java的更多信息http://www.ibm.com/developerworks/mobile/worklight/getting-started.html,搜索“在适配器中使用Java”
手动创建XML模板并使用JSON中的值填充它们。请参阅http://public.dhe.ibm.com/software/mobile-solutions/worklight/docs/v620/04_02_HTTP_adapter_-_Communicating_with_HTTP_back-end_systems.pdf的第18页以及。使用{myJsonObject.propertyName}将值注入XML。