繁体   English   中英

从 WSO2 EI 中具有 2 个命名空间的 XML 转换 JSON 消息

[英]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 上的最新微型集成商文档

你可以试试下面的

<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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM