2013-01-15 78 views
3

似乎網上有其他帖子提出相同的問題,但要麼他們沒有完全解決問題,要麼我錯過了某些東西(最有可能是後者)。爲內容相關定義XPath查詢

當定義爲一個XAMLX服務內容相關的XPath查詢,我就在那裏命名空間前綴來自困惑。例如,在查詢 「SM:主體()/ xg0:ID」,哪裏 「SM」 和 「xg0」 來自。我認爲這些是指定的地方,但我不知道在哪裏。如果我理解正確,那麼與消息合約一起使用時生成的查詢不起作用。在某種程度上,我同意這一點。如果我改變「xg0」的前綴爲「tempuri」我可以讓它在基本情況下,但不是在所有情況下工作。有沒有一個文檔能夠解釋這個查詢究竟是如何工作的?

回答

3

命名空間前綴存儲在XAMLX文件。不幸的是,沒有UI顯示值,你必須開始通過XAMLX源進行挖掘。見下面其中xgSc被定義爲http://tempuri.org/

<Receive x:Name="__ReferenceID0" CanCreateInstance="True" DisplayName="ReceiveRequest" sap:VirtualizedContainerService.HintSize="255,86" OperationName="GetData" ServiceContractName="p:IService"> 
    <Receive.CorrelationInitializers> 
    <RequestReplyCorrelationInitializer CorrelationHandle="[handle]" /> 
    <QueryCorrelationInitializer> 
     <XPathMessageQuery x:Key="key1"> 
     <XPathMessageQuery.Namespaces> 
      <ssx:XPathMessageContextMarkup> 
      <x:String x:Key="xgSc">http://tempuri.org/</x:String> 
      </ssx:XPathMessageContextMarkup> 
     </XPathMessageQuery.Namespaces>sm:body()/xgSc:GetData/xgSc:orderId</XPathMessageQuery> 
    </QueryCorrelationInitializer> 
    </Receive.CorrelationInitializers> 
    <ReceiveParametersContent> 
    <p1:OutArgument x:TypeArguments="x:String" x:Key="orderId" /> 
    </ReceiveParametersContent> 
</Receive> 
+0

的XPathMessageQuery.Namespaces部分非常感謝你的回答。這(幾乎)正是我所期待的。我說的差不多,因爲在我的應用我有被引用tempuri.org命名空間,所以我不知道該用什麼樣的XPath查詢的一部分。回顧我讀過的其他網頁,我嘗試使用「tempuri」作爲前綴,這工作。再次,謝謝你。我不確定這個簡單的東西如何避開我。 –

+0

我很難叫開XAMLX作爲一個XML文件,並通過一噸的XML簡單的打算。我真的想要這個在UI中出現。 – Maurice