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><?xml version='1.0' encoding='utf-8'?><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</text></value>
</csv-record>
</csv-set>
</soapenv:Body>
</soapenv:Envelope>
入力に as last が含まれているため、Smooks は要求されたすべてのことを行っているのでしょうか? ただし、理解できる要素の数は 4 としてカウントされるため、csv にヘッダー行があるとは限りません。ヘッダー行を含めることで(ある程度)解決できますが、要素数が正しくありません。csv の最後の行にキャリッジ リターンを含めるだけで、終了を解決できます。
どうすればこれを解決できますか? 1 年前に同じ質問をしている別のスレッドを見つけましたが、回答はありません。