我有一系列服务,我想为它们的唯一名称空间提供每个不同的前缀。
现在我要做的就是根据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等,然后根据该内容进行过滤。这可能吗?
答案 0 :(得分:1)
如果我理解正确,你想使用XPath来查找某个命名空间中的元素。这可以使用namespace-uri()
函数完成,如下所示:
//*[namespace-uri()='http://NilooSoft.com']
命名空间前缀引用的URI地址在XML中比它自己的前缀更有意义,因此按URI地址过滤元素更有意义,如上例所示。但是,如果你想以某种方式想要通过名称空间前缀进行过滤,你可以尝试这种方式:
//*[starts-with(name(),'nil:')]