Using this xml:
<?xml version="1.0" encoding="UTF-8"?>
<actionResponse>
<responses>
<response>
<data></data>
<details>
<requestId>1</requestId>
</details>
<errors>
<error>
<msg>Message 1</msg>
</error>
<error>
<msg>Message 2</msg>
</error>
</errors>
</response>
<response>
<data></data>
<details>
<requestId>2</requestId>
</details>
<errors>
<error>
<msg>Message 1</msg>
</error>
<error>
<msg>Message 2</msg>
</error>
</errors>
</response>
</responses>
</actionResponse>
I can play with xpath(s) like these:
//response[details/requestId=1]/errors/error/msg[text()="Message 1"] //response[details/requestId=2]/errors/error/msg[text()="Message 1"] //response[details/requestId=1]/errors/error/msg[text()="Message 2"]
In other words, I can get a message from an specific request. The problem is trying to do the same when the xml has namespaces. I can not find a way to do the same with this one:
<?xml version="1.0" encoding="UTF-8"?>
<env:Envelope
xmlns:env="http://www.w3.org/2003/05/soap-envelope">
<env:Body>
<actionResponse
xmlns="http://www.sample.com/namespaces/SOAP">
<responses>
<response>
<data></data>
<details>
<requestId>1</requestId>
</details>
<errors>
<error>
<msg>Message 1</msg>
</error>
<error>
<msg>Message 2</msg>
</error>
</errors>
</response>
<response>
<data></data>
<details>
<requestId>2</requestId>
</details>
<errors>
<error>
<msg>Message 1</msg>
</error>
<error>
<msg>Message 2</msg>
</error>
</errors>
</response>
</responses>
</actionResponse>
</env:Body>
</env:Envelope>