2016-06-12 5 views
0

Muleoftの新機能で、XMLを出力として提供するWebサービスを使用しているフローを作成しています.MuleでJSONに変換するXMLを行う必要があります。Mulesoft WebサービスのXML出力のJSONへ

以下

以下

ポストマンプリティ値、

<?xml version="1.0" encoding="UTF-8"?> 
<GetProjectResponse xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="namespaceName"> 
    <GetProjectResult>&lt;root&gt; 
    &lt;header&gt; 
    &lt;status&gt; 
     &lt;message&gt;Success&lt;/message&gt; 
    &lt;/status&gt; 
    &lt;/header&gt; 
    &lt;data&gt; 
    &lt;Project&gt; 
     &lt;ProjectId&gt;12345&lt;/ProjectId&gt; 
     &lt;ProjectShortName&gt;ABCDEF&lt;/ProjectShortName&gt; 
     &lt;BusinessGroupName&gt;ABCDEF GROUP&lt;/BusinessGroupName&gt; 
     &lt;InstitutionShortName&gt;Country&lt;/InstitutionShortName&gt; 
     &lt;CountryName&gt;Sample&lt;/CountryName&gt; 
     &lt;Code&gt;Sample&lt;/Code&gt; 
    &lt;/Project&gt; 
    &lt;/data&gt; 
&lt;/root&gt;</GetProjectResult> 
</GetProjectResponse> 

あるしかし、私のJSONは次のようになり、

{ 
    "GetProjectResponse": { 
    "@xmlns:xsd": "http://www.w3.org/2001/XMLSchema", 
    "@xmlns:xsi": "http://www.w3.org/2001/XMLSchema-instance", 
    "@xmlns:xmlns": "namespaceName", 
    "GetProjectResult": "<root>\n <header>\n <status>\n  <message>Success</message>\n </status>\n </header>\n <data>\n <Project>\n  <ProjectId>12345</ProjectId>\n  <ProjectShortName>ABCDEF</ProjectShortName>\n  <BusinessGroupName>ABCDEF GROUP</BusinessGroupName>\n  <InstitutionShortName>Country</InstitutionShortName>\n  <CountryName>Sample</CountryName>\n  <Code>Sample</Code>\n </Project>\n </data>\n</root>" 
    } 
} 

私の実際のXML、私のミュール流れであります"GetProjectResult"ノード内の値です。私はこれを達成するでしょう。

答えて

0

オプション3:

<http:listener-config name="HTTP_Listener_Configuration" host="0.0.0.0" port="8083" basePath="test3" doc:name="HTTP Listener Configuration"/> 

    <flow name="removeFlow"> 
    <http:listener config-ref="HTTP_Listener_Configuration" path="/" doc:name="HTTP"/> 
    <json:xml-to-json-transformer doc:name="XML to JSON"/> 
    <logger message="#[json:GetProjectResponse/GetProjectResult]" level="INFO" doc:name="Logger"/> 
    <set-variable variableName="extractJsondata" value="#[json:GetProjectResponse/GetProjectResult]" mimeType="application/json" doc:name="Variable"/> 
    <set-payload value="#[flowVars.extractJsondata]" doc:name="Set Payload"/> 
    <echo-component doc:name="Echo"/> 
    </flow> 

私は私の郵便配達中に入力として直接あなたのxmlを与えています。上記の結果を得ることができる。

他の方法として json-to-object-transformerとペイロードを抽出することができます。 https://docs.mulesoft.com/mule-user-guide/v/3.7/mule-expression-language-tips(このURLのJSON処理部分を参照してください)。お役に立てれば。

+0

それは働いた。ありがとうございます – user2665819

+0

スター、あなたはhttp://stackoverflow.com/q/37801082/2665819で私の別の問題をチェックすることができるかどうかをチェックできますか? – user2665819

0

3オプション

1.Youは(ミュールのバージョンに基づく)XpathまたはXpath3式を使用してGetProjectResult最初に抽出して、あなたはシンプルな選択肢となりxmlToJson変圧器を使用してJSONに変換することができます。流れの中に入力されたXML 2.Once

は、名前空間は、その後、(あなたがやっている現在)JSON

3.Use直接xmlToJson変圧器に変換取り出し、JSONtoObjectに変換して、必要を抽出このリンクに記載されている値Extract values from a json response in mule flowhow to access json data mule esb

+0

私はあなたのオプションを試しましたが、運はありません。 Iamがどこに行方不明かわからない。適切な書式を持つもう1つの答えとして詳細が与えられています。 – user2665819

0

XSLTを使用して 'GetProjectResult'オブジェクトを取得し、XmlToJsonトランスフォーマを適用しました。

XSLT:

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output omit-xml-declaration="yes" /> 
<xsl:template match="/"> 
     <xsl:value-of disable-output-escaping="yes" select="//GetProjectResult" /> 
</xsl:template> 
</xsl:stylesheet> 

FLOW

Flow Used to convert to json

XMLのFLOW:

<mulexml:dom-to-xml-transformer doc:name="DOM to XML"/> 
    <mulexml:xslt-transformer xsl- file="test.xsl" maxIdleTransformers="2" maxActiveTransformers="5" doc:name="XSLT"/> 
    <byte-array-to-string-transformer doc:name="Byte Array to String"/> 
    <json:xml-to-json-transformer doc:name="XML to JSON"/> 
    <logger message="#[payload:java.lang.String]" level="INFO" doc:name="Logger"/> 

JSON流れの上に適用した後の応答は以下の通りです:

{ 
"root" : { 
    "header" : { 
     "status" : { 
      "message" : "Success" 
     } 
    }, 
    "data" : { 
     "Project" : { 
      "ProjectId" : "12345", 
      "ProjectShortName" : "ABCDEF", 
      "BusinessGroupName" : "ABCDEF GROUP", 
      "InstitutionShortName" : "Country", 
      "CountryName" : "Sample", 
      "Code" : "Sample" 
     } 
    } 
} 

}

これはあなたの希望JSONですか?

+0

はい、これが私が望むJSONです。どうもありがとう。 \t \t \t \t \t \t <のxsl:出力省略-XML宣言=」はい」/> \t \t \tます。 \t \t \tます。 \t \t \t \t \t \t ' – user2665819

+0

あなたが設定XMLの一部を表示することができ、私はtiがどのように見たいですこのXSLパーツを適用しました – user2665819

+0

ソリューションに感謝します。何らかの理由で、DOM-XMLが私にXML出力を与えているにもかかわらず、XSLTは私に出力を与えていません。したがって、スターのオプションを試して、働いた。とにかくあなたの時間のために多くのおかげで – user2665819

0

これは、XMLが文字列形式であるため、最初に変換したり、XMLファイルを使用したりするためです。トランスフォームメッセージコンポーネントで簡単に変換できます。

関連する問題