2012-12-10 64 views
1

我對所看到的內容感到有點困惑,因此轉向了SO。字符串到XNamespace在BizTalk業務流程內的隱式轉換

我正在開發一個BizTalk(2010)編排,我想解析傳入的XML消息。我只需要檢索特定節點重複的次數。我本可以使用XPath。但是,我選擇使用LinqToXml。

我已經創建了一個System.Xml.Linq.XNamespace類型的變量,並且在表達式形狀中,我將它賦值爲一個字符串值..例如http://mycompany/v1.0。這是一個非常有效的C#語句,因爲存在從String到XNamespace的隱式轉換(MSDN link)。

但是Orchestration根本不會編譯。我得到這個錯誤cannot implicitly convert type System.String to System.Xml.Linq.XNamespace

如果我不使用的XNamespace變量,直接傳入消息運行LinqToXml這樣

MessageCount = MyXElement.Elements("{http://mycompany/v1.0}ListOfNotifications").Elements("{http://mycompany/v1.0}Notification").Count(); 

我得到一個cannot convert from String to XName錯誤。即使這是混亂。

我正在使用BizTalk 2010和C#4.0。有人可以解釋我是否錯過了一些東西嗎?我已經使用LinqPad嘗試了所有這些代碼片段,並得到了預期的響應。所以,沒有錯別字或缺少參考。

+0

** ListOfNotifications **是否有多個實例? – user1826905

+0

@ user1826905:沒有。只有一個 –

+0

不在您的XML中,在您的模式中。那個元素是如何定義的?它是無界的嗎? – user1826905

回答

0

我選擇使用XPath選項來檢索我需要的值,而不是使用LinqToXml。我最終編寫的代碼如下所示:

xpath(myOrchVariable, "string(/*[local-name()='InputRootNode' and namespace-uri()='http://my/name/space'])") 
相關問題