2016-05-05 12 views
-2

WS02 WSB4.9.0のローカルエントリを2つ以下に設定しましたが、どのようにノード値をプロキシまたはシーケンスで読み取ることができますか。インラインXMLローカルエントリWSO2のローカルエントリ(XML、URL)を読むESB

<?xml version="1.0" encoding="UTF-8"?> 
    <localEntry key="test" xmlns="http://ws.apache.org/ns/synapse"> 
     <list> 
     <flag>a</flag> 
     <path>b</path> 
     </list> 
    </localEntry> 

ソースURLエントリ

<?xml version="1.0" encoding="UTF-8"?> 
<localEntry key="sample" src="file:/C:/Apache24/bin/ApacheMonitor" xmlns="http://ws.apache.org/ns/synapse"/> 

助けてください。

答えて

3

エントリがファイルシステムにある場合は、あなたが使用することができます。

<property name="testProp" expression="get-property('test')" scope="default" type="STRING"/> 

<property name="sampleProp" expression="get-property('sample')" scope="default" type="STRING"/> 

あなたがXMLセットOMタイプ内の値へのアクセスを取得したい場合:

<property name="testProp" expression="get-property('test')" scope="default" type="OM"/> 
<log level="custom"> 
    <property expression="$ctx:testProp" name="FullValue" /> 
    <property expression="$ctx:testProp//tt:flag" name="flagValue" xmlns:tt="http://ws.apache.org/ns/synapse"/> 
    <property expression="$ctx:testProp//tt:path" name="pathValue" xmlns:tt="http://ws.apache.org/ns/synapse"/> 
</log> 

私のフルプロキシ:

<?xml version="1.0" encoding="UTF-8"?> 
<proxy xmlns="http://ws.apache.org/ns/synapse" 
     name="testProxy6" 
     transports="https http" 
     startOnLoad="true" 
     trace="disable"> 
    <target> 
     <inSequence> 
     <property name="testProp" expression="get-property('test')" scope="default" type="OM"/> 
     <log level="custom"> 
      <property expression="$ctx:testProp" name="FullValue" /> 
      <property expression="$ctx:testProp//tt:flag" name="flagValue" xmlns:tt="http://ws.apache.org/ns/synapse"/> 
      <property expression="$ctx:testProp//tt:path" name="pathValue" xmlns:tt="http://ws.apache.org/ns/synapse"/> 
     </log>  
     <respond/> 
     </inSequence> 
     <outSequence> 
      <log level="full"> 
      <property value="SEQUENCE: " name="OUT"/> 
      </log>  
     <send/> 
     </outSequence> 
    </target> 
</proxy> 

ファイルのtest.xmlで私のローカルエントリ:

<?xml version="1.0" encoding="UTF-8"?> 
    <localEntry key="test" xmlns="http://ws.apache.org/ns/synapse"> 
     <list> 
     <flag>a</flag> 
     <path>b</path> 
     </list> 
    </localEntry> 

私のログ出力:

[2016-05-11 12:21:30,999] INFO - LogMediator FullValue = <list xmlns="http://ws.apache.org/ns/synapse"> 
     <flag>a</flag> 
     <path>b</path> 
     </list>, flagValue = a, pathValue = b 
+0

しかし、どのように私はそれが完全なXMLエントリを返すノード値に上記のオプションと Bを得るのですか。 – dilgates

+0

あなたのリクエストした変更内容で自分の回答を編集してください。 –

+0

空の結果を得る – dilgates

0

は、あなたが地元のエントリでXMLから値を取得する必要がある場合は、あなたがすべきすべての最初のXMLコンテンツをプロパティに取得し、その型をOMに設定する必要があります。

<property expression="get-property('xmlLocalEntrySample')" name="xmlTest" scope="default" type="OM"/> 

メッセージコンテキストから、このようなプロパティ値を読み取ることができます。 $ ctxは、Synapse Message-Contextプロパティのプレフィックスで、これを使用してデフォルトスコープでプロパティを取得します。あなたはtestFlagAtestPathの値をログインした場合は、それぞれのコンソールでBプリントを見ることができます。

<property expression="$ctx:xmlTest//*[local-name()='flag']" name="testFlagA"/> 
<property expression="$ctx:xmlTest//*[local-name()='path']" name="testPath"/> 
+0

空の結果を取得する - testFlagA =、testPath = – dilgates