2012-12-17 25 views
5

與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>&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> 

所以的Smooks盡一切被要求作爲輸入包括在去年這個?然而,它理解的元素數量被計爲4,所以它不像csv應該有一個標題行。我可以通過包含一個標題行來解決(在一定程度上),但是然後元素計數不正確。我可以通過在csv的最後一行包括一個回車來解決結束結束問題。

我該如何解決這個問題?一年前,我發現另一個線程提出了同樣的問題,但沒有答案。

+1

如果您發現問題的解決方案,請將其作爲回答發佈並接受。儘可能回答你自己的問題是很好的。這樣,stackoverflow就可以將您的問題記錄爲已回答,只有在標題中指明時纔可以。 – joergl

回答

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編輯器中,它默認具有這些元素,而教程根本沒有這些元素)。

+0

請將答案放在答案中,而不是問題中。 –