WSO2: преобразование сообщения CSV в json wso2 esb . ошибка с неожиданным символом '"' (код 34) в прологе; ожидается '‹'

Я пытаюсь использовать преобразователь данных для преобразования csv в json. Ниже приведен прокси-сервис, который я написал.

<?xml version="1.0" encoding="UTF-8"?>
<proxy name="csvtojson" startOnLoad="true" transports="http https vfs" 
xmlns="http://ws.apache.org/ns/synapse">
<target>
<inSequence>
<property expression="$body/*[1]" name="body" scope="default" type="OM"/>
<log level="full">
<property name="PropertyName" value="Message tobe fed to mapper"/>
</log>
<datamapper config="gov:datamapper/csvtojsonmapping.dmc" 
inputSchema="gov:datamapper/csvtojsonmapping_inputSchema.json" 
inputType="CSV" 
outputSchema="gov:datamapper/csvtojsonmapping_outputSchema.json" 
outputType="JSON"/>
<log level="full">
<property name="property_name" value="aftermapping"/>
</log>
<property name="ContentType" scope="axis2" type="STRING" 
value="application/json"/>
<log description="" level="full">
<property name="property_name" value="msgpropertyset as json"/>
</log>
<send>
<endpoint>
<http method="post" uri-template="https://www.google.com/"/>
</endpoint>
</send>
</inSequence>
<outSequence/>
<faultSequence/>
</target>
<parameter name="transport.PollInterval">1</parameter>
<parameter name="transport.vfs.FileURI">file:///tmp/in</parameter>
<parameter name="transport.vfs.ContentType">text/csv</parameter>
<parameter name="transport.vfs.ActionAfterProcess">MOVE</parameter>
<parameter 
name="transport.vfs.MoveAfterFailure">file:///tmp/failure</parameter>
<parameter name="transport.vfs.ActionAfterFailure">MOVE</parameter>
<parameter name="transport.vfs.Build">false</parameter>
<parameter name="transport.vfs.FileNamePattern">.*\.csv</parameter>
<parameter name="transport.vfs.MoveAfterProcess">file:///tmp/out</parameter>
</proxy>

Уже включено ниже два в файл axis2.xml:

While executing the service, I am getting below error:

[2018-08-30 18:38:44,535] [EI-Core] ERROR - VFSTransportListener Error 
processing File URI : file:///tmp/in/test.csv
org.apache.axiom.om.OMException: 
com.ctc.wstx.exc.WstxUnexpectedCharException: Unexpected character '"' (code 
34) in prolog; expected '<'
at [row,col {unknown-source}]: [1,1]
    at 
 org.apache.axiom.om.impl.builder.StAXOMBuilder.next
(StAXOMBuilder.java:296)
at 
org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder.getSOAPEnvelope
(StAXSOAPModelBuilder.java:204)
    at org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder.<init> 
(StAXSOAPModelBuilder.java:154)
    at 
org.apache.axiom.om.impl.AbstractOMMetaFactory.createStAXSOAPModelBuilder
(AbstractOMMetaFactory.java:73)
    at org.apache.axiom.om.impl.AbstractOMMetaFactory.createSOAPModelBuilder
(AbstractOMMetaFactory.java:79)
    at 
org.apache.axiom.om.OMXMLBuilderFactory.createSOAPModelBuilder
(OMXMLBuilderFacto ry.java:196)
    at org.apache.axis2.builder.SOAPBuilder.processDocument
 (SOAPBuilder.java:65)
    at org.apache.synapse.transport.vfs.VFSTransportListener.processFile
 (VFSTransportListener.java:822)
    at 
  org.apache.synapse.transport.vfs.VFSTransportListener.scanFileOrDirectory
 (VFSTransportListener.java:477)
    at org.apache.synapse.transport.vfs.VFSTransportListener.poll
 (VFSTransportListener.java:188)
    at org.apache.synapse.transport.vfs.VFSTransportListener.poll
 (VFSTransportListener.java:134)
    at 
 org.apache.axis2.transport.base.AbstractPollingTransportListener$1$1.run
 (AbstractPollingTransportListener.java:67)
    at org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run
 (NativeWorkerPool.java:172)
    at java.util.concurrent.ThreadPoolExecutor.runWorker
 (ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run
 (ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)
 Caused by: com.ctc.wstx.exc.WstxUnexpectedCharException: 
 Unexpected character '"' (code 34) in prolog; expected '<'
 at [row,col {unknown-source}]: [1,1]
    at com.ctc.wstx.sr.StreamScanner.throwUnexpectedChar
 (StreamScanner.java:639)
    at com.ctc.wstx.sr.BasicStreamReader.nextFromProlog
 (BasicStreamReader.java:2052)
    at com.ctc.wstx.sr.BasicStreamReader.next 
 (BasicStreamReader.java:1134)
    at org.apache.axiom.util.stax.wrapper.XMLStreamReaderWrapper.next
 (XMLStreamReaderWrapper.java:225)
    at 
  (DisallowDoctypeDeclStreamReaderWrapper.java:34)
    at org.apache.axiom.om.impl.builder.StAXOMBuilder.parserNext
 (StAXOMBuilder.java:681)
    at org.apache.axiom.om.impl.builder.StAXOMBuilder.next
 (StAXOMBuilder.java:214)
    ... 15 more

Это содержимое сообщений, которые я помещаю в папку /tmp/in, содержимое которой выглядит следующим образом:

ContactType, FirstName, MiddleName, LastName, Email, PhoneNumber, Company, Address1, Address2, Address3, Zip, Country, FacsimileTelephoneNumber, PartnerFinanceID 1, ABC, A, CBD, [email protected], 123456789, Test, 200WS, 300 WSD, 400тью,125кджи,Мир,4567894585,манекен

пожалуйста, помогите с вашими входными данными. Пожалуйста, дайте мне знать, если вам нужна дополнительная информация с моей стороны...........


person 2437850    schedule 30.08.2018    source источник
comment
Я думаю, вам придется выяснить, как создается файл:///tmp/in/test.csv и каково его содержимое.   -  person    schedule 30.08.2018
comment
содержание следующее: ContactType,FirstName,MiddleName,LastName,Email,PhoneNumber,Company,Address1,Address2,Address3,Zip,Country,FacsimileTelephoneNumber,PartnerFinanceID 1,ABC,A,CBD,[email protected],123456789,Test ,200WS,300WSD,400тю,125кджи,Мир,4567894585,манекен   -  person 2437850    schedule 30.08.2018
comment
Если вы хотите добавить к своему вопросу, отредактируйте его и таким образом добавьте детали. Комментарии можно удалять.   -  person    schedule 30.08.2018


Ответы (1)


вы можете получить доступ к содержимому полезной нагрузки запроса/ответа CSV, настроив org.apache.axis2.format.PlainTextBuilder и org.apache.axis2.format.PlainTextFormatter для типа содержимого text/csv в axis2.xml. Например:

<messageBuilder contenttype="text/csv" class="org.apache.axis2.format.PlainTextBuilder"/>
<messageFormatter contenttype="text/csv" class="org.apache.axis2.format.PlainTextFormatter"/>

См. - https://docs.wso2.com/display/ESB500/Working+with+Message+Builders+and+Formatters#WorkingwithMessageBuildersandFormatters-Handlingtext/csvmessages

person krishan    schedule 31.08.2018
comment
Спасибо Кришан. Эти свойства уже обновлены, но проблема остается. Нужно ли мне проверять любое другое место. Нужна помощь плиз!!! - person 2437850; 31.08.2018
comment
Я изменил messageBuilder и messageformatter на messageBuilder и messageFormatter, как показано ниже › и это заставило код работать. - person 2437850; 31.08.2018