为了与第三方网络服务集成,我在CDATA部分收到我的“实际”数据。
<getDocumentsReqResponse xmlns="http://tempuri.org/">
<getDocumentsReqResult>
<![CDATA[<?xml version="1.0"?>
<wsResult>
<rsCode>00</rsCode>
<rsMessage>...</rsMessage>
</wsResult>]]></getDocumentsReqResult>
</getDocumentsReqResponse>
所以我试图在发送端口上使用入站路径选项。但是当我尝试这样做时,我收到一条空信息。此选项是否适用于CDATA? 我刚进入xpath(/ [local-name()='getDocumentsReqResponse'和namespace-uri()='http://tempuri.org/'] / [local-name()='getDocumentsReqResult'和namespace-uri()='http://tempuri.org/'])并将节点编码放到字符串中。 或者我做错了什么。我以前在收到HTML编码字符串时使用过它,但从未使用过CDATA。
无论如何我都需要在流程中进行编排,所以如果这是唯一的选择我将不得不去做。
感谢您的帮助
答案 0 :(得分:0)
尝试:
/ [本地名称()= 'getDocumentsReqResponse'] / [本地名称()= 'getDocumentsReqResult'] /文本()
从技术上讲,在xPath中,text()应该返回CDATA内容。您可以在任何.Net应用中测试它,因为它的行为相同。
答案 1 :(得分:0)
我用简单的xslt
修复了它<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:var="http://schemas.microsoft.com/BizTalk/2003/var" exclude-result-prefixes="msxsl var s0" version="1.0" xmlns:s0="http://tempuri.org/">
<xsl:output omit-xml-declaration="yes" method="xml" version="1.0" />
<xsl:template match="/">
<xsl:apply-templates select="/s0:getDocumentsReqResponse" />
</xsl:template>
<xsl:template match="/s0:getDocumentsReqResponse">
<xsl:value-of select="normalize-space(s0:getDocumentsReqResult)" disable-output-escaping="yes" />
</xsl:template>
</xsl:stylesheet>
这也是诀窍。 : - )