與WSO2 ESB例如http://wso2.org/library/articles/2011/01/wso2-esb-example-file-processing初涉但遇到其中當一個簡單的csv文件WSO2 ESB文件處理示例的Smooks CSV解析器第一行包括有效載荷的命名空間
name0,value0
name1,value1
name2,value2
name3,value3
使用這種配置
<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>
通過的Smooks解析的問題
導致大部分正確的輸出,但第一行包含有效負載命名空間,這是不正確的
<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>
所以的Smooks盡一切被要求作爲輸入包括在去年這個?然而,它理解的元素數量被計爲4,所以它不像csv應該有一個標題行。我可以通過包含一個標題行來解決(在一定程度上),但是然後元素計數不正確。我可以通過在csv的最後一行包括一個回車來解決結束結束問題。
我該如何解決這個問題?一年前,我發現另一個線程提出了同樣的問題,但沒有答案。
如果您發現問題的解決方案,請將其作爲回答發佈並接受。儘可能回答你自己的問題是很好的。這樣,stackoverflow就可以將您的問題記錄爲已回答,只有在標題中指明時纔可以。 – joergl