C# 是否可以在XPath中按名称空间进行筛选?

C# 是否可以在XPath中按名称空间进行筛选?,c#,wcf,xpath,filter,routing,C#,Wcf,Xpath,Filter,Routing,我有一系列的服务,我想为它们各自的独特名称空间赋予不同的前缀 现在我所要做的就是根据SOAP上出现的名称空间进行排序 <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:nil="http://NilooSoft.com"> <soap:Header/> <soap:Body> <nil:Applica

我有一系列的服务,我想为它们各自的独特名称空间赋予不同的前缀

现在我所要做的就是根据SOAP上出现的名称空间进行排序

    <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" 
xmlns:nil="http://NilooSoft.com">
       <soap:Header/>
       <soap:Body>
          <nil:ApplicantGetByForeignId>

          </nil:ApplicantGetByForeignId>
       </soap:Body>
    </soap:Envelope>

我的意思是简单地找出这个消息是否包含一个前缀为nil的节点(或者我的其他服务的其他前缀等等)。
我可以将服务命名为cards、dir、interface等等,然后根据内容进行过滤。但这可能吗?

如果我理解正确,您希望使用XPath查找特定命名空间中的元素。这可以使用
namespace-uri()
函数完成,如下所示:

//*[namespace-uri()='http://NilooSoft.com']
名称空间前缀引用的URI地址在XML中比它本身的前缀更有意义,因此在上面的示例中,按URI地址过滤元素更有意义。但是,如果您想通过名称空间前缀进行过滤,可以尝试以下方法:

//*[starts-with(name(),'nil:')]

首先谢谢你的建议,它本身确实有帮助,但我需要更具体一点的建议;我想检查这样一个节点是否存在并返回boolean,在这里使用boolean()解决方案行吗?@Midnight_Blaze当然行:(单击测试按钮运行演示)