5

WSO2 ESB の例http://wso2.org/library/articles/2011/01/wso2-esb-example-file-processingを試してみましたが、単純な csv ファイルの場合に問題が発生しました

name0,value0
name1,value1
name2,value2
name3,value3

この設定を使用して smooks によって解析されます

<smooks-resource-list xmlns="http://www.milyn.org/xsd/smooks-1.1.xsd" xmlns:csv="http://www.milyn.org/xsd/smooks/csv-1.1.xsd">
<csv:reader fields="name,value" />
</smooks-resource-list>

大部分は正しい出力になりますが、最初の行には正しくないペイロード名前空間が含まれています

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
    <text xmlns="http://ws.apache.org/commons/ns/payload">name0,value0
name1,value1
name2,value2
name3,value3</text>
</soapenv:Body>
</soapenv:Envelope>

そのため、最初の name0 値が読み取られると、これも正しくない が含まれます。

Smooks はこれを次のように変換します。

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
    <csv-set>
        <csv-record number="1">
            <name>&lt;?xml version='1.0' encoding='utf-8'?>&lt;text xmlns="http://ws.apache.org/commons/ns/payload">name0</name>
            <value>value0</value>
        </csv-record>
        <csv-record number="2">
            <name>name1</name>
            <value>value1</value>
        </csv-record>
        <csv-record number="3">
            <name>name2</name>
            <value>value2</value>
        </csv-record>
        <csv-record number="4">
            <name>name3</name>
            <value>value3&lt;/text></value>
        </csv-record>
    </csv-set>
</soapenv:Body>
</soapenv:Envelope>

入力に ​​as last が含まれているため、Smooks は要求されたすべてのことを行っているのでしょうか? ただし、理解できる要素の数は 4 としてカウントされるため、csv にヘッダー行があるとは限りません。ヘッダー行を含めることで(ある程度)解決できますが、要素数が正しくありません。csv の最後の行にキャリッジ リターンを含めるだけで、終了を解決できます。

どうすればこれを解決できますか? 1 年前に同じ質問をしている別のスレッドを見つけましたが、回答はありません。

4

1 に答える 1

0

これで整理できました。私のsmooksタグで

<smooks xmlns="http://ws.apache.org/ns/synapse" config-key="conf:/smooks-config.xml">
   <input type="text"/>
   <output type="xml"/>
</smooks>

最初の入力要素を xml に設定しました。テキストに変更すると問題が解決しました。(WSO2 の GUI エディターでは、デフォルトでこれらの要素が含まれていますが、チュートリアルにはこれらがまったくありません)。

于 2013-01-24T07:03:30.487 に答える