2016-10-06 12 views
0

webservicesを消費してJSONに変換するAnyPointStudioの単純なフローがあります。文字列とXMLへとXMLのデータを取得getAtomicNumberサービスイムを使用している場合しかし、 http://www.webservicex.net/periodictable.asmx?WSDLMule:XMLをJSONに変換せずに

enter image description here

enter image description here

イム周期表を持っているWebサービスを消費します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として解析するにはどうすればよいですか?

答えて

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> 
関連する問題