用Xpath断言

时间:2010-06-30 15:26:58

标签: soap xpath

我试图通过使用Xpath选择特定节点来断言SOAP响应,这是我的XML响应

<return>
<contactList>
               <contacts>
                  <person>
                     <contactId>3426</contactId>
                     <personName>
                        <names>
                              <firstName>Cosi</firstName>
                              <lastName>Como</lastName>
                              <middleName>Midi</middleName>
                        </names>
                     </personName>
                  </person>
                  </contacts>
            </contactList>
</return>

我正在尝试获取contactId值,我尝试了这个//contactList/contacts/person[contactId='3426']/contactId//*[local-name()='contactList'] /contacts/person[contactId='3426']并且没有工作我得到了这个结果No Nodes Matched如何?这是有效的xpath语法,有效的路径有替代吗?

1 个答案:

答案 0 :(得分:1)

没有看到完整的SOAP消息,我无法确定,但我的第一个猜测是命名空间。

在您的一个查询中使用local-name()意味着您使用的是非空名称空间。但即使在第二个查询中,如果节点实际上具有非空命名空间,则在未指定命名空间的情况下对“contacts”的引用会导致XPath失败。

尝试//*[local-name()='contactList'],看看你是否得到了“contactList”节点。