1

我对我所看到的有点困惑,因此前往 SO。

我正在开发 BizTalk (2010) 编排,我想解析传入的 XML 消息。我只需要检索特定节点重复的次数。我本可以使用 XPath。但是,我选择使用 LinqToXml。

我创建了一个类型变量System.Xml.Linq.XNamespace并在表达式形状内,我为其分配了一个字符串值.. 说http://mycompany/v1.0。这是一个完全有效的 C# 语句,因为存在从 String 到 XNamespace 的隐式转换(MSDN 链接)。

但是编排根本不会编译。我得到这个错误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 尝试了所有这些代码片段,并且得到了预期的响应。因此,没有错别字或缺少参考。

4

1 回答 1

0

我选择使用该XPath选项来检索我需要的值,而不是使用 LinqToXml。我最终编写的代码如下所示:

xpath(myOrchVariable, "string(/*[local-name()='InputRootNode' and namespace-uri()='http://my/name/space'])")
于 2012-12-27T15:04:54.903 回答