我对所看到的东西感到有点困惑,因而走向了SO。
我正在开发BizTalk(2010)Orchestration,我想解析传入的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 :(得分:0)
我选择使用XPath
选项来检索我需要的值,而不是使用LinqToXml。我最后编写的代码如下所示:
xpath(myOrchVariable, "string(/*[local-name()='InputRootNode' and namespace-uri()='http://my/name/space'])")