【问题标题】:Mule: not converting XML to JSON conrrectlyMule:没有正确地将 XML 转换为 JSON
【发布时间】:2016-10-06 01:18:07
【问题描述】:

我在 AnyPointStudio 上有一个使用 Web 服务并将其转换为 JSON 的简单流程。

我正在使用具有元素周期表的网络服务: http://www.webservicex.net/periodictable.asmx?WSDL

但是,当使用 getAtomicNumber 服务时,我将 xml 的数据作为字符串获取并且 XML 到 JSON 会给出以下结果:

{
    "GetAtomicNumberResponse" : {
        "@xmlns:xsd" : "http://www.w3.org/2001/XMLSchema",
        "@xmlns:xsi" : "http://www.w3.org/2001/XMLSchema-instance",
        "@xmlns:xmlns" : "http://www.webserviceX.NET",
        "GetAtomicNumberResult" : "<NewDataSet>\n  <Table>\n    <AtomicNumber>49</AtomicNumber>\n    <ElementName>Indium</ElementName>\n    <Symbol>In</Symbol>\n    <AtomicWeight>114.82000000000001</AtomicWeight>\n    <BoilingPoint>2300</BoilingPoint>\n    <IonisationPotential>5.79</IonisationPotential>\n    <EletroNegativity>1.49</EletroNegativity>\n    <AtomicRadius>1.5</AtomicRadius>\n    <MeltingPoint>430</MeltingPoint>\n    <Density>7310</Density>\n  </Table>\n</NewDataSet>"
    }
}

如您所见,它不解析 GetAtomicNumberResult。

如何将整个结果解析为 JSON?

【问题讨论】:

    标签: json xml web-services mule


    【解决方案1】:

    您面临的问题是,soap 响应对象有一个包含元素详细信息的嵌入对象。您要做的是,提取响应对象并在此之后执行 xml 到 json。见下文:

        <flow name="periodic_tableFlow">
            <http:listener config-ref="HTTP_Listener_Configuration" path="/table" doc:name="HTTP"/>
            <dw:transform-message doc:name="Transform Message">
                <dw:set-payload><![CDATA[%dw 1.0
    %output application/xml
    %namespace ns0 http://www.webserviceX.NET
    ---
    {
           ns0#GetAtomicNumber: {
                  ns0#ElementName: "Indium"
           }
    }]]></dw:set-payload>
            </dw:transform-message>
            <logger message="#[message.payloadAs(String)]" level="INFO" doc:name="Logger"/>
            <ws:consumer config-ref="Web_Service_Consumer" operation="GetAtomicNumber" doc:name="Web Service Consumer"/>
            <dw:transform-message metadata:id="021335ff-1e33-4cdd-be35-49d95f93b8bc" doc:name="Transform Message">
                <dw:set-payload><![CDATA[%dw 1.0
    %output application/java
    %namespace ns0 http://www.webserviceX.NET
    ---
    payload.ns0#GetAtomicNumberResponse.ns0#GetAtomicNumberResult]]></dw:set-payload>
            </dw:transform-message>
            <json:xml-to-json-transformer doc:name="XML to JSON"/>
            <logger message="Before transformer - #[payload]" level="INFO" doc:name="Logger"/>
            <echo-component doc:name="Echo"/>
        </flow>
    </mule>
    

    【讨论】:

      猜你喜欢
      • 2014-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-23
      相关资源
      最近更新 更多