2014-02-13 22 views
0

對於與第三方Web服務的集成,我正在接收CDATA部分中的「實際」數據。BizTalk WCF SendPort CDATA作爲迴應

<getDocumentsReqResponse xmlns="http://tempuri.org/"> 
    <getDocumentsReqResult> 
     <![CDATA[<?xml version="1.0"?> 
<wsResult> 
<rsCode>00</rsCode> 
<rsMessage>...</rsMessage> 
</wsResult>]]></getDocumentsReqResult> 
</getDocumentsReqResponse> 

所以我試圖在發送端口上使用入站路徑選項。但是當我嘗試這樣做時,我收到了一條空白的消息。這個選項是否適用於CDATA? 我剛剛進入xpath(localhost name ='getDocumentsReqResult')和namespace-uri()=' http://tempuri.org/'])並將節點編碼設置爲字符串。 或者我做錯了什麼。當我收到一個HTML編碼的字符串時,我曾經使用它,但從來沒有使用CDATA。

無論如何,我將需要一個編排,所以如果這是唯一的選擇,我將不得不爲此而努力。

感謝您的幫助

回答

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> 

這也做的伎倆固定它。 :-)

0

嘗試:

/[本地名稱()= 'getDocumentsReqResponse']/[本地名稱()= 'getDocumentsReqResult'] /文()

技術上,在xPath中,text()應該返回CDATA內容。你可以在任何.Net應用程序中測試它,因爲它的行爲是一樣的。

+0

我試過了。無結果:無法找到匹配的入站主體路徑表達式。我試着將編碼設置爲字符串和xml。 –