当XML输入有效负载中有“与”符号时,Datamapper会失败

当XML输入有效负载中有“与”符号时,Datamapper会失败,xml,xslt,wso2esb,datamapper,Xml,Xslt,Wso2esb,Datamapper,我有一个简单的XML负载,其中包含一组重复的icpNo、CustName、电子邮件和手机,我正在将其转换为CSV格式 CustName在几个条目中有一个符号和。例如: Mr & Mrs Smith. 尝试转换此数据时,数据映射程序失败。如果我不映射这个元素,Datamapper会很好地工作 我确信是符号导致了问题,因为如果我进入dmc文件并使用javascript encodeURIComponent函数对其进行编码,它就会工作。当然,在我的目标中,我得到了编码值,比如空格和符号,这是

我有一个简单的XML负载,其中包含一组重复的icpNo、CustName、电子邮件和手机,我正在将其转换为CSV格式

CustName在几个条目中有一个符号和。例如:

Mr & Mrs Smith.
尝试转换此数据时,数据映射程序失败。如果我不映射这个元素,Datamapper会很好地工作

我确信是符号导致了问题,因为如果我进入dmc文件并使用javascript encodeURIComponent函数对其进行编码,它就会工作。当然,在我的目标中,我得到了编码值,比如空格和符号,这是我在生成CSV文件时不想要的

如何让Datamapper转换包含符号的XML,并以可读格式(即不转义)生成包含符号的CSV输出?或者我不应该使用Datamapper和XSLT吗

附加实际上是DSS输出的示例输入XML:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
<Entry>
<icpNo>70</icpNo>
<customerNo>70</customerNo>
<surname>p&amp;p</surname>
<middleName>s&amp;s</middleName>
<firstname />
</Entry>
</soapenv:Body>
</soapenv:Envelope>

请张贴一些你到目前为止已经尝试过的样品。您可能会得到一些帮助。如果您的输入包含未替换的符号和字符,则它不是XML,不能由XSLT处理。适当的XML文档将具有
Mr&;史密斯夫人
——警告:我对DataMapper一无所知。
[com.ctc.wstx.exc.WstxLazyException] com.ctc.wstx.exc.WstxUnexpectedCharException: Unexpected character ' ' (code 32); expected a semi-colon after the reference for entity 's'
 at [row,col {unknown-source}]: [140,10]
    at com.ctc.wstx.exc.WstxLazyException.throwLazily(WstxLazyException.java:45)
    at com.ctc.wstx.sr.StreamScanner.throwLazyError(StreamScanner.java:720)
    at com.ctc.wstx.sr.BasicStreamReader.safeFinishToken(BasicStreamReader.java:3677)
    at com.ctc.wstx.sr.BasicStreamReader.getText(BasicStreamReader.java:858)
    at org.apache.axiom.om.impl.builder.StAXBuilder.createOMText(StAXBuilder.java:289)
    at org.apache.axiom.om.impl.builder.StAXBuilder.createOMText(StAXBuilder.java:250)
    at org.apache.axiom.om.impl.builder.StAXOMBuilder.next(StAXOMBuilder.java:252)
    at org.apache.axiom.om.impl.llom.OMSerializableImpl.build(OMSerializableImpl.java:78)
    at org.apache.axiom.om.impl.llom.OMElementImpl.build(OMElementImpl.java:722)
    at org.apache.axiom.om.impl.llom.OMElementImpl.detach(OMElementImpl.java:700)
    at org.apache.axiom.om.impl.llom.OMNodeImpl.setParent(OMNodeImpl.java:105)
    at org.apache.axiom.om.impl.llom.OMElementImpl.addChild(OMElementImpl.java:296)
    at org.apache.axiom.om.impl.llom.OMElementImpl.addChild(OMElementImpl.java:212)
    at org.apache.axiom.soap.impl.llom.SOAPBodyImpl.addChild(SOAPBodyImpl.java:231)
    at org.wso2.carbon.mediator.datamapper.DataMapperMediator.transform(DataMapperMediator.java:340)
    at org.wso2.carbon.mediator.datamapper.DataMapperMediator.mediate(DataMapperMediator.java:256)
    at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:97)
    at org.apache.synapse.mediators.base.SequenceMediator.mediate(SequenceMediator.java:260)
    at org.apache.synapse.core.axis2.Axis2SynapseEnvironment.mediateFromContinuationStateStack(Axis2SynapseEnvironment.java:766)
    at org.apache.synapse.core.axis2.Axis2SynapseEnvironment.injectMessage(Axis2SynapseEnvironment.java:282)
    at org.apache.synapse.core.axis2.SynapseCallbackReceiver.handleMessage(SynapseCallbackReceiver.java:554)
    at org.apache.synapse.core.axis2.SynapseCallbackReceiver.receive(SynapseCallbackReceiver.java:188)
    at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:180)
    at org.apache.synapse.transport.passthru.ClientWorker.run(ClientWorker.java:261)
    at org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(NativeWorkerPool.java:172)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)