【问题标题】:Transform JSON message from XML which has 2 namespaces in WSO2 EI从 XML 转换 JSON 消息,在 WSO2 EI 中有 2 个命名空间
【发布时间】:2021-12-26 15:29:33
【问题描述】:

我有 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>

但我无法从集成工作室保存此实现。这里有什么错误?

【问题讨论】:

  • 您是否获得了集成工作室的最新更新?我刚试过这个,它保存得很好。在你的 freemarker 模板中,output_format="XML" 不是必需的。

标签: xml wso2 freemarker xml-namespaces wso2mi


【解决方案1】:

这个选项似乎只在 API Manager 4.0 上可用。关于 PayloadFactory 的 Micro Integrator 文档没有提到 freemarker 模板。

Latest Micro integrator docs on 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>

【讨论】:

  • 我正在使用 API Manager 4.0.0。有没有办法在这里使用 freemarker 因为我在将 XML 消息转换为 JSON 消息时需要使用一些逻辑?
猜你喜欢
  • 2017-12-12
  • 1970-01-01
  • 1970-01-01
  • 2019-11-19
  • 2021-03-28
  • 1970-01-01
  • 1970-01-01
  • 2020-02-24
  • 1970-01-01
相关资源
最近更新 更多