Handsoap: Parsing Attributes

Hi,

I am using Handsoap to integrate my Rails app with a SOAP web service, and when parsing the XML in the response, I need to change behavior depending on an element's 'type' attribute. A snippet of the XML response is below:

<?xml version="1.0" encoding="UTF-8"?> <s:Envelope xmlns:s="Error;   <s:Body>     <RetrieveEWalletForSubscriberResponse xmlns="http:// ContentDirect.SubscriberManagement">       <FaultDetails xmlns:a="http://schemas.datacontract.org/2004/07/ ContentDirect.Framework.Contract.Message" xmlns:i="http://www.w3.org/ 2001/XMLSchema-instance" i:nil="true"/>       <PaymentInstruments xmlns:i="http://www.w3.org/2001/XMLSchema- instance">         <PaymentInstrument>           <CreatedDate>2010-09-15T17:25:24.567</CreatedDate>           <Detail i:type="PaymentInstrumentCreditCard">             <AccountNumber>************9736</AccountNumber>             <BillingAddress>               <AddDate>2010-08-20T05:52:39.55</AddDate>

I've tried to get the Detail node's 'type' attribute using XPATH the following ways:

puts (node/"subscriber:Detail"["@type"]).to_s puts (node/"subscriber:Detail@instance:type").to_s

and using a number of namespace combinations, but no luck. Does anyone have experience or ideas on parsing XML attribute values using Handsoap?

Thanks in advance!

I just got it to work using:

puts (node/"subscriber:Detail").xpath("@instance:type").to_s

I forgot to mention that in this case, node was a XMLNodeSelection instance pointing to <PaymentInstrument>. Hopefully this helps someone else.