0

我使用的软件将 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 变量,但它也没有用。

4

1 回答 1

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">
    &lt;<xsl:value-of select="local-name()"/>&gt;<xsl:apply-templates select="child::node()" mode="toString"></xsl:apply-templates>&lt;<xsl:value-of select="local-name()"/> /&gt;
</xsl:template>
于 2013-04-03T08:54:52.723 回答