0

xpath を使用して着信 SOAP リクエストから値を抽出しようとしていますが、何らかの理由で Mule がそれを xml として認識しません。ここのコードサンプルでは、​​情報をログに記録しようとしているだけで、Mule が Mule メッセージを文字列に変換しているだけではないかと思います。その結果、"[B4FEfea"; toString() の標準出力。そして、xpath式はその式で失敗します。

フロー自体は正常に動作し、SOAP-UI からリクエストを送信すると、ロガー コンポーネントなしでレスポンスが返されますが、レスポンス内に入力の一部を追加したいのですが、それは失敗します。

フローは次のとおりです。

<?xml version="1.0" encoding="UTF-8"?>

<mule xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:mulexml="http://www.mulesoft.org/schema/mule/xml" xmlns:http="http://www.mulesoft.org/schema/mule/http" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation" xmlns:spring="http://www.springframework.org/schema/beans" xmlns:core="http://www.mulesoft.org/schema/mule/core" xmlns:file="http://www.mulesoft.org/schema/mule/file" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="CE-3.2.1" xsi:schemaLocation="
http://www.mulesoft.org/schema/mule/xml http://www.mulesoft.org/schema/mule/xml/current/mule-xml.xsd 
http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd 
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd 
http://www.mulesoft.org/schema/mule/file http://www.mulesoft.org/schema/mule/file/current/mule-file.xsd ">
    <mulexml:namespace-manager includeConfigNamespaces="false">  
        <mulexml:namespace prefix="soapenv" uri="http://schemas.xmlsoap.org/soap/envelope/"/>  
        <mulexml:namespace prefix="mob" uri="http://mobistar.be/spellchecker/"/> 
    </mulexml:namespace-manager>

    <flow name="spellcheckerFlow2" doc:name="spellcheckerFlow2" processingStrategy="synchronous">
        <http:inbound-endpoint exchange-pattern="request-response" host="localhost" port="8081" path="spellcheck" contentType="text/xml" doc:name="SOAP Spell check"/>
        <logger message="#[xpath://mob:Text]" level="INFO" doc:name="Logger"/>
        <mulexml:xslt-transformer maxIdleTransformers="2" maxActiveTransformers="5" xsl-file="E:\Projects\Mobistar\Mule\spellchecker\src\main\resources\Request2GoogleAPI.xslt" doc:name="XSLT"/>
        <response>
            <mulexml:xslt-transformer maxIdleTransformers="2" maxActiveTransformers="5" xsl-file="E:\Projects\Mobistar\Mule\spellchecker\src\main\resources\GoogleAPI2Response.xslt" doc:name="XSLT"/>
        </response>
        <http:outbound-endpoint exchange-pattern="request-response" host="www.google.com" port="80" path="tbproxy/spell?lang=en" contentType="text/xml" doc:name="Google API"/>
    </flow>
</mule>

私が送信しているリクエストは次のとおりです。

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:spel="http://mobistar.be/spellchecker/">
   <soapenv:Header/>
   <soapenv:Body>
      <spel:CheckSpellingRequest>
         <spel:Text>Please test this blabla</spel:Text>
      </spel:CheckSpellingRequest>
   </soapenv:Body>
</soapenv:Envelope>

あなたが私を助けてくれることを願っています。

4

1 に答える 1

0

XPathが正しくないようです。試してみてください

/ soapenv:Envelope / soapenv:Body / spel:CheckSpellingRequest / spel:Text

後で使用するために値を格納する場合は、メッセージプロパティを使用できます。

プロパティを保存するには:

<message-properties-transformer scope="session">    
<add-message-property key="incomingText"
    value="#[xpath://soapenv:Envelope/soapenv:Body/spel:CheckSpellingRequest/spel:Text]" />
</message-properties-transformer>

プロパティを読み取るには:

<logger message="#[header:session: incomingText]" level="INFO" doc:name="Logger"/>
于 2012-05-27T23:48:43.780 に答える