Dabbling mit WSO2 ESB Beispiel http://wso2.org/library/articles/2011/01/wso2-esb-example-file-processing aber ein Problem zu begegnen, wo, wenn eine einfache CSV-DateiWSO2 ESB Dateiverarbeitung Beispiel Smooks CSV Parser erste Zeile enthält Payload Namensraum
name0,value0
name1,value1
name2,value2
name3,value3
von Smooks analysiert wird unter Verwendung dieser Konfiguration
<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>
führt zu weitgehend der richtigen Ausgabe, aber die erste Zeile enthält den Nutzlastnamespace, der nicht korrekt ist
<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>
Wenn also der Wert von first name0 gelesen wird, enthält er auch das, was ebenfalls falsch ist.
Smooks dann wandelt diese in
<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>
So wird Smooks alle tun es gefragt wird, wie der Eingang den die zuletzt enthält? Jedoch wird die Anzahl der Elemente, die es versteht, als 4 gezählt, so dass es nicht so ist, als ob der CSV eine Kopfzeile hätte. Ich kann (bis zu einem gewissen Grad) auflösen, indem ich eine Kopfzeile einfüge, aber dann ist die Anzahl der Elemente falsch. Ich kann das Ende schließen, indem ich nur einen Wagenrücklauf auf der letzten Zeile von CSV einschließe.
Wie kann ich das beheben? Ich habe vor einem Jahr einen anderen Thread gefunden, der dieselbe Frage stellt, aber keine Antworten.
Wenn Sie die Lösung für Ihre Frage gefunden haben, posten Sie sie bitte als Antwort und akzeptieren Sie sie. Es ist völlig in Ordnung, wenn Sie Ihre eigenen Fragen beantworten können. Auf diese Weise kann der Stackoverflow Ihre Frage als beantwortet registrieren, was nicht möglich ist, wenn Sie dies nur im Titel angeben. – joergl