是否可以在XPath中按命名空间进行筛选
本文关键字:命名空间 筛选 XPath 是否 | 更新日期: 2023-09-27 18:23:46
我有一系列服务,我想为它们的唯一名称空间赋予每个不同的前缀。
现在我所要做的就是根据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:')]