tags:

views:

15

answers:

1

Hello, I'm trying to assert SOAP response by using Xpath to select particular nodes, here is my XML response

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

I'm trying to get contactId value, I tried both this //contactList/contacts/person[contactId='3426']/contactId and //*[local-name()='contactList'] /contacts/person[contactId='3426'] and none work I get this result No Nodes Matched how? this is valid xpath syntax and valid path is there an alternative?

+1  A: 

Without seeing the full-blown SOAP message, I can't be certain, but my first guess would be namespaces.

The use of local-name() in one of your queries implies to me that you are using non-empty namespaces. But even in your second query, the reference to "contacts" without specifying a namespace would cause the XPath to fail if the node actually has a non-blank namespace.

Try //*[local-name()='contactList'] and see if you get the "contactList" node.

Toby