我正在使用将XML文件导入工作流的软件,然后使用工作流任务将其导出到Web服务。 XML文件类似于:
<?xml version="1.0"?>
<NostroEvent>
<Id>1</Id>
<AccountNumber>123</AccountNumber>
<Debit>100</Debit>
</NostroEvent>
导入文件,我正在编写ExportWS任务的以下SOAP请求,该请求将选择xml的所有标记并将它们发送到Web服务:(还输入了与Web服务的连接配置)在另一部分的那个任务中)
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<!--xsl:variable name="nostro">
<xsl:copy-of select="NostroEvent"></xsl:copy-of>
</xsl:variable-->
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:bmt="http://bmt">
<soapenv:Header/>
<soapenv:Body>
<bmt:insertNostro>
<bmt:Xml><xsl:copy-of select="NostroEvent"/></bmt:Xml>
</bmt:insertNostro>
</soapenv:Body>
</soapenv:Envelope>
</xsl:template>
</xsl:stylesheet>
请注意,insertNostro是web方法,Xml是参数,我从NostroEvent开始传递标记和文本集。但它不起作用。我一直得到一个空指针异常,这意味着Web服务收到一个空字符串。我尝试在顶部使用xsl变量,但它也没用。
答案 0 :(得分:1)
如果问题是它是XML而不是字符串,请尝试执行以下操作:
<xsl:template match="/">
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:bmt="http://bmt">
<soapenv:Header/>
<soapenv:Body>
<bmt:insertNostro>
<bmt:Xml>
<xsl:apply-templates select="NostroEvent" mode="toString"/>
</bmt:Xml>
</bmt:insertNostro>
</soapenv:Body>
</soapenv:Envelope>
</xsl:template>
<xsl:template match="*" mode="toString">
<<xsl:value-of select="local-name()"/>><xsl:apply-templates select="child::node()" mode="toString"></xsl:apply-templates><<xsl:value-of select="local-name()"/> />
</xsl:template>