我试图通过使用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语法,有效的路径有替代吗?
答案 0 :(得分:1)
没有看到完整的SOAP消息,我无法确定,但我的第一个猜测是命名空间。
在您的一个查询中使用local-name()意味着您使用的是非空名称空间。但即使在第二个查询中,如果节点实际上具有非空命名空间,则在未指定命名空间的情况下对“contacts”的引用会导致XPath失败。
尝试//*[local-name()='contactList']
,看看你是否得到了“contactList”节点。