[英]Transform JSON message from XML which has 2 namespaces in WSO2 EI
我有 xml 有效负载,我想将其转换为 json 消息。 为此,我使用了带有 freemarker 模板的有效负载工厂调解器。 我的 XML 有 2 个命名空间。
<?xml version="1.0" encoding="utf-8"?>
<AAA xmlns="http://www.example.com/XMLSchema">
<BBB>
<abc>xxxxxxx</abc>
<msg>9212840000000996</msg>
<ref>x212840000000078</ref>
</BBB>
<CCC xmlns="http://www.example.com/sc1">
<cf1>
<edg>N</edg>
<nic>000265</nic>
<ccc>I</ccc>
<nnn>TESTNOTIF5</nnn>
</cf1>
</CCC>
</AAA>
这是我根据文档实现的有效载荷工厂调解器。
<payloadFactory media-type="json" template-type="freemarker">
<format><![CDATA[
<#ftl ns_prefixes={"n1": "http://www.example.com/XMLSchema", "n2": "http://www.example.com/sc1"}
output_format="XML">
{
"aaaaaa": "TestValue1",
"bbbb": "$payload.n1:AAA.n2:CCC.n2:cf1.n2.nic",
"ccc": "1299"}]]></format>
<args/>
</payloadFactory>
但是我无法从集成工作室保存这个实现。 这里的错误是什么?
似乎此选项仅在 API Manager 4.0 上可用。 关于 PayloadFactory 的 Micro Integrator 文档没有提到 freemarker 模板。
你可以试试下面的
<payloadFactory media-type="json">
<format>
{
"aaaaaa": "TestValue1",
"bbbb": "$1",
"ccc": "1299"}</format>
<args>
<arg expression="//ns1:CCC/ns1:cf1/ns1:nic" evaluator="xml" xmlns:ns1="http://www.example.com/sc1"/>
</args>
</payloadFactory>
如果您将肥皂服务转换为 REST API,我没有看到比 Apinizer 更简单的方法,我知道,因为我们做到了:)
只需 wsdl 就足以进行转换,所有事情都是自动完成的,如果您需要自定义,它还有许多高级功能。 你可以从这里查看它的文档
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.