2013-12-11 26 views
0

我使用returnes我XML類似以下斯普利特消息推動性質

<PolledMessage xmlns="http://SomeNamespace.ru/"> 
    <Message> 
    <MessageNode> 
     <MasterDataMemberAddRequest xmlns="http://AnotherNamespace"> 
     ... 
     </MasterDataMemberAddRequest> 
    </MessageNode> 
    </Message> 
    <Message> 
    <MessageNode> 
     <MasterDataMemberAddRequest xmlns="http://AnotherNamespace"> 
     ... 
     </MasterDataMemberAddRequest> 
    </MessageNode> 
    </Message> 
</PolledMessage> 

SQLSERVER存儲過程凡MessageNode是一個節點是輪詢從SQL Server表良好的格式化XML消息,包含我想要提取的消息。我已經使用XmlReceive管道使用Envelope模式,並且它運行良好。但在此之後,我需要將一些自定義值寫入每個解壓縮消息的消息上下文中。我寫了一個自定義管道,它接受屬性名稱,名稱空間和值,並將其寫入消息上下文,但我無法弄清楚如何將反彙編和提升反彙編消息的屬性放在一起。

感謝您的任何建議!

回答

1

阿爾森,

的XMLReceive管道debatches使用XML僞君子成分will promote individual message properties您的信封,並提供它們被正確標記爲context properties(並假設他們是在消息中!)

如果需要推自定義非消息屬性到每個消息中,您可以創建一個自定義管道,並將您的管道組件作用於resolve party stage中的每個反彙編消息。

enter image description here

這裏有一個link到自定義背景屬性提升組件。您會在示例中看到它被置於驗證階段 - 我相信驗證或解決派對都可以。希望這可以幫助!

+0

謝謝,傑森!看起來很酷,但我無法檢查它是否有效,因爲我遇到了另一個問題。在我的自定義管道中,我使用Promote方法將我的值寫入上下文:'Message.Context.Promote(「您的屬性的名稱」,「屬性架構的名稱空間」,值);'它給了我下面的錯誤:'按名稱空間加載屬性信息列表失敗或在列表中找不到屬性'。你知道'Property Name'究竟是什麼,'property schema'的命名空間是什麼? –

+0

想通了。該命名空間參數是屬性架構文件本身的名稱空間,而不是名稱空間節點或目標名稱空間。 –