1

我正在努力使用 BizTalk xpath 功能
- 我收到的消息有一个空白的默认命名空间
- 在 C# 中我会添加一个 NameSpaceManager
- 但我看不到如何在 BizTalk Expression 中做到这一点?

我没有做的就是获取 HasErrors 和 NumberOfErrors 的值

<?xml version="1.0" encoding="utf-8"?>
<ImportIndexDocumentResponse   
      xmlns:xsd="http://www.w3.org/2001/XMLSchema"        
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xmlns="http://www.aniteps.com/xml/schemas/awm/images4">
  <HasErrors>false</HasErrors>
  <NumberOfErrors xsi:type="xsd:int">0</NumberOfErrors>
  <ErrorDescription xsi:type="xsd:string">No exception ocurred.</ErrorDescription>
  ...
4

2 回答 2

1

using 的答案local-name()是错误的,因为它允许选择不需要的元素,例如:

  • OhMy:有错误
  • 不同:HasErrors
  • 不需要:有错误

这是一个正确的解决方案:

如果无法将前缀绑定到默认命名空间http://www.aniteps.com/xml/schemas/awm/images4 ”,可以使用标准 XPath 函数namespace-uri()指定元素必须位于给定的命名空间。

因此,选择所需的两种节点的 XPath 表达式的一个示例是

/*/*[命名空间-uri() = 'http://www.aniteps.com/xml/schemas/awm/images4'
   和
     名称()='有错误'
    ]

和表达式:

/*/*[命名空间-uri() = 'http://www.aniteps.com/xml/schemas/awm/images4'
   和
     name() = 'NumberOfErrors'
    ]
于 2009-04-26T21:39:59.093 回答
0

如果您的元素没有重复,您可以将它们从响应模式中提升为可区分字段。那么您不必担心编码。只需使用:

x = YourMessageName.HasErrors;

如果它是 web/wcf 引用,您可以提升 reference.xsd(或带有“使用 Wcf 服务向导”的 xyz.xsd)中的值。请注意,如果您更新参考,它们将“消失”。

于 2009-04-27T11:15:32.550 回答