How to return a list of objects from soap webservice with rails - ruby-on-rails-3

I'm using Savon to access a soap webservice, but I can only ever return a single result, when what I want is an array of results.
Here is my call:
response = client.call(:get_events, message: { username: "xxxx", password: "xxxxxxxx", company_code: "12TCE" })
I want 'response' to return all records with the company_code of "12TCE" and for me to be able to output them all doing something like:
response.to_hash[:get_events_response].each do |a|
a[:return][:item][:name]
end
How can I return all records and output as desired?
UPDATE 1:
This is the link to the wsdl: http://www.brrmedia.co.uk/webservices/event/index.php?wsdl
This is the response I get:
HTTPI POST request to www.brrmedia.co.uk (httpclient)
SOAP response (status 200)
<?xml version="1.0" encoding="utf-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns="http://www.brrmedia.co.uk/webservices/event" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Body>
<ns1:getEventsResponse xmlns:ns1="http://www.brrmedia.co.uk/webservices/event">
<return xsi:type="SOAP-ENC:Array" SOAP-ENC:arrayType="tns:objEvent[1]">
<item xsi:type="tns:objEvent">
<id xsi:type="xsd:int">119466</id>
<name xsi:type="xsd:string">blur Group - 2000 projects milestone</name>
<summary xsi:type="xsd:string"/>
<location xsi:type="xsd:string"/>
<date xsi:type="xsd:string">2013-12-17 11:30</date>
<link xsi:type="xsd:string">http://www.brrmedia.co.uk/event/119466/partner/brrsoap</link>
<company xsi:type="tns:objCompany">
<name xsi:type="xsd:string">blur Group</name>
<codes xsi:type="SOAP-ENC:Array" SOAP-ENC:arrayType="tns:objCompanyCode[1]">
<item xsi:type="tns:objCompanyCode">
<code xsi:type="xsd:string">BLUR</code>
<collection xsi:type="xsd:string">London Stock Exchange (AIM)</collection>
</item>
</codes>
<website xsi:type="xsd:string">http://www.blurgroup.com/</website>
<category xsi:type="xsd:string">Technology</category>
</company>
<presenter xsi:type="tns:objPresenter">
<name xsi:type="xsd:string"> Philip Letts</name>
<image xsi:type="xsd:string">http://www.brrmedia.co.uk/getimage/id/31215</image>
</presenter>
<media xsi:type="SOAP-ENC:Array" SOAP-ENC:arrayType="tns:objMediaItem[3]">
<item xsi:type="tns:objMediaItem">
<src xsi:type="xsd:string">http://s3-us-west-2.amazonaws.com/brr-streamguys/files/BLUR/blur20131217.pdf</src>
<duration xsi:type="xsd:string">00:00:00</duration>
<filesize xsi:type="xsd:string">380</filesize>
<media_type xsi:type="xsd:string">pdf</media_type>
</item>
<item xsi:type="tns:objMediaItem">
<src xsi:type="xsd:string">http://s3-us-west-2.amazonaws.com/brr-streamguys/files/BLUR/BLUR20131217</src>
<duration xsi:nil="true" xsi:type="xsd:string"/>
<filesize xsi:nil="true" xsi:type="xsd:string"/>
<media_type xsi:type="xsd:string">presimages</media_type>
</item>
<item xsi:type="tns:objMediaItem">
<src xsi:type="xsd:string">http://s3-us-west-2.amazonaws.com/brr-streamguys/files/BLUR/BLUR20131217editv1.mp3</src>
<duration xsi:type="xsd:string">00:07:54</duration>
<filesize xsi:type="xsd:string">5557</filesize>
<media_type xsi:type="xsd:string">audio</media_type>
</item>
</media>
<type xsi:type="xsd:string">audio</type>
<height xsi:type="xsd:int">900</height>
<width xsi:type="xsd:int">680</width>
</item>
</return>
</ns1:getEventsResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Related

Assertions on XML response in Karate

How to apply assertions in such kind of a response in XML.
I have tried to convert this in json first by using
* json response = response
But this returns an invalid json when checked via json validator. As I thought converting in JSON and then matching the response will be easier.
** Assertions**
Check if first tag is Resource.
Check type is type1
Check valueTotal is 7
Check /Resource/entry/url value is https://myurl1
Check /Resource/entry/resource/user/identifier/type/coding/code
value is CC
<Resource xmlns="http://myurl">
<type xmlns="" value="type1"/>
<valueTotal xmlns="" value="7"/>
<entry xmlns="">
<url value="https://myurl1"/>
<resource>
<user>
<id value="123"/>
<identifier>
<type>
<coding>
<system value="http://myurl2"/>
<code value="CC"/>
<display value="abcedflk"/>
</coding>
<text value="test"/>
</type>
<system value="http://myurl3"/>
<value value="90204343"/>
</identifier>
<patient>
<reference value="value/new"/>
</patient>
<relationship>
<extension url="http://myurl4">
<valueCodeableConcept>
<coding>
<system value="http://myurl5"/>
<code value="xyz"/>
<display value="value11111"/>
</coding>
<text value="value11111"/>
</valueCodeableConcept>
</extension>
</relationship>
<name>
<family value="ABC"/>
<given value="TEST"/>
<given value="JON"/>
</name>
<gender value="male"/>
<birthDate value="1990-02-17"/>
</user>
</resource>
<search>
<mode value="123zbc"/>
</search>
</entry>
<entry xmlns="">
<url value="https://myurl1"/>
<resource>
<user>
<id value="123"/>
<identifier>
<type>
<coding>
<system value="http://myurl2"/>
<code value="CC"/>
<display value="abcedflk"/>
</coding>
<text value="test"/>
</type>
<system value="http://myurl3"/>
<value value="90204343"/>
</identifier>
<patient>
<reference value="value/new"/>
</patient>
<relationship>
<extension url="http://myurl4">
<valueCodeableConcept>
<coding>
<system value="http://myurl5"/>
<code value="abc"/>
<display value="value22222"/>
</coding>
<text value="value22222"/>
</valueCodeableConcept>
</extension>
</relationship>
<name>
<family value="ABC"/>
<given value="TEST"/>
<given value="JON"/>
</name>
<gender value="male"/>
<birthDate value="1990-02-17"/>
</user>
</resource>
<search>
<mode value="123yyy"/>
</search>
</entry>
</Resource>
Assuming the XML is in the variable response:
# the first 2 lines are un-necessary, as all the
# XPath assertions start with /Resource
* json asJson = response
* match asJson contains { Resource: '#present' }
* match /Resource/type/#value == 'type1'
* match /Resource/valueTotal/#value == '7'
* match /Resource/entry[1]/url/#value == 'https://myurl1'
* match /Resource/entry[1]/resource/user/identifier/type/coding/code/#value == 'CC'
Please brush up on XML and XPath if needed: https://github.com/karatelabs/karate#advanced-xpath

Use values of the elements as XPath expression to extract another elements using XSLT 1.0

Suppose there is such a document:
<?xml version="1.0" encoding="utf-8" ?>
<root>
<paths>
<item>
<name>username</name>
<path>user/name</path>
</item>
<item>
<name>useremail</name>
<path>concat(user/name,': ',user/email)</path>
</item>
</paths>
<user>
<name>John</name>
<email>john#gmail.com</email>
</user>
</root>
the output required to obtain such a document:
<?xml version="1.0" encoding="utf-8"?>
<results>
<item name="username" value="John"/>
<item name="useremail" value="John: john#gmail.com"/>
</results>
The point is that the number of path elements can vary, and their values can refer to different elements of the source document (including using functions).
Is there a way to use the values of some elements as an expression of the search for other?

Remove attribute from nested fields in xml column in sql

After trying many answers about how to delete a field from a xml column in SQL, I can't still manage to find a way to delete the same attribute in multiple fields. Currently my xml column looks something like this:
<ArrayOfCodes xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Code code="001 ">
<price xmlns="http://..." xsi:nil="true" />
<salePrice xmlns="http://..." xsi:nil="true" />
<quantity xmlns="http:/...">1</>
</Code>
<Code code="002 ">
<price xmlns="http://..." xsi:nil="true" />
<salePrice xmlns="http://..." xsi:nil="true" />
<quantity xmlns="http:/...">1</>
</Code>
<Code code="003 ">
<price xmlns="http://..." xsi:nil="true" />
<salePrice xmlns="http://..." xsi:nil="true" />
<quantity xmlns="http:/...">1</>
</Code>
</ArrayOfCodes>
My task is to remove the xmlns attributes in all of the fields. Can you please help me with that?

where and what is the error?

Site is running .NET 4.5, with VB. Uses SQLServer and ELMAH. I use VWD 2012.
Production site works fine, but local development site crashes with error:
"The specified string is not in the form required for an e-mail address."
when trying to load a page in the \Admin folder, which requires login.
The error comes up in VWD on a "Source Not Available" tab as soon as the login screen shows in the browser.
The error details are:
*System.FormatException was unhandled
HResult=-2146233033
Message=The specified string is not in the form required for an e-mail address.
Source=System
StackTrace:
at System.Net.Mail.MailAddressParser.ReadCfwsAndThrowIfIncomplete(String data, Int32 index)
at System.Net.Mail.MailAddressParser.ParseDomain(String data, Int32& index)
at System.Net.Mail.MailAddressParser.ParseAddress(String data, Boolean expectMultipleAddresses, Int32& index)
at System.Net.Mail.MailAddressParser.ParseAddress(String data)
at System.Net.Mail.MailAddress..ctor(String address, String displayName, Encoding displayNameEncoding)
at System.Net.Mail.MailMessage..ctor()
at Elmah.ErrorMailModule.ReportError(Error error)
at Elmah.ErrorMailModule.ReportError(Object state)
at System.Threading.QueueUserWorkItemCallback.WaitCallback_Context(Object state)
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem()
at System.Threading.ThreadPoolWorkQueue.Dispatch()
at System.Threading._ThreadPoolWaitCallback.PerformWaitCallback()
InnerException:*
ELMAH stores the error in the AllXML field as:
<error
application="/VFA4"
host="DAVE-PC"
type="System.Web.HttpException"
message="File does not exist."
source="System.Web"
detail="System.Web.HttpException (0x80004005): File does not exist.
at System.Web.StaticFileHandler.GetFileInfo(String virtualPathWithPathInfo, String physicalPath, HttpResponse response)
at System.Web.StaticFileHandler.ProcessRequestInternal(HttpContext context, String overrideVirtualPath)
at System.Web.DefaultHttpHandler.BeginProcessRequest(HttpContext context, AsyncCallback callback, Object state)
at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)"
time="2014-01-13T15:15:41.7894004Z"
statusCode="404">
<serverVariables>
<item
name="ALL_HTTP">
<value
string="HTTP_CONNECTION:keep-alive
HTTP_ACCEPT:*/*
HTTP_ACCEPT_ENCODING:gzip, deflate
HTTP_ACCEPT_LANGUAGE:en-US,en;q=0.8
HTTP_COOKIE:.ASPXANONYMOUS=YUThibsmzwEkAAAANWNhZGVjOTItNGQzNS00NmM3LTk3NjYtMTBkODAyYTBiODJhdYxJPubvb1GGRcsjrVicS0N3hCM1; VFA=ID=0&Name=Visitor&ACLSite=0&LoggedIn=false&Profile=0&Greeting=Visitor&Email=; FCOCRV.ASPXAUTH=2EB2E728E7546828599E7059AC071774F1B68DE36945B303364F8DE61A99F4DAEA1378B800DE77E4AD01EDCD1280072326E94CC7F9195A9AE1C8D5B829467129E14E9370F038922195F7D7FC6D7AB38936BBBC59C6C51B406783DA5C6D6567F00CB2B2AF25FD94881D778037C0EB183F8E009861; VFAanon=82GiHFGPKOy-L41M6_huRwSQi3a9FrKsTxn8DLe9u9G-5_4E45PebhWPaRXIcrD75UH17jCEDam8dBaRxfr7MOVXANsTmfdxLNxfGfGsWnq2y7yULGQg7BcCnFVfqmoMWOEp-w2; Violette=bIkdCP9-GSCYa2OhlgT3wakdXVcNXKlK1-VMT5WKlnHquMi7gMk3uIuXuEf87i7KZqH-13GVbwaqNV_7zj-pWgObGgZZPzUING_2tWJGlaLNkM4pUU6ttrVAdjyOn9bjTUBlDw2; __AntiXsrfToken=cde04d3ee0d74a9ba9af775e3dc13bb4
HTTP_HOST:localhost:60825
HTTP_REFERER:http://localhost:60825/VFA4/Account/Login?ReturnUrl=%2fVFA4%2fAdmin%2fAdm-VFAMembers.aspx
HTTP_USER_AGENT:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.72 Safari/537.36
" />
</item>
<item
name="ALL_RAW">
<value
string="Connection: keep-alive
Accept: */*
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.8
Cookie: .ASPXANONYMOUS=YUThibsmzwEkAAAANWNhZGVjOTItNGQzNS00NmM3LTk3NjYtMTBkODAyYTBiODJhdYxJPubvb1GGRcsjrVicS0N3hCM1; VFA=ID=0&Name=Visitor&ACLSite=0&LoggedIn=false&Profile=0&Greeting=Visitor&Email=; FCOCRV.ASPXAUTH=2EB2E728E7546828599E7059AC071774F1B68DE36945B303364F8DE61A99F4DAEA1378B800DE77E4AD01EDCD1280072326E94CC7F9195A9AE1C8D5B829467129E14E9370F038922195F7D7FC6D7AB38936BBBC59C6C51B406783DA5C6D6567F00CB2B2AF25FD94881D778037C0EB183F8E009861; VFAanon=82GiHFGPKOy-L41M6_huRwSQi3a9FrKsTxn8DLe9u9G-5_4E45PebhWPaRXIcrD75UH17jCEDam8dBaRxfr7MOVXANsTmfdxLNxfGfGsWnq2y7yULGQg7BcCnFVfqmoMWOEp-w2; Violette=bIkdCP9-GSCYa2OhlgT3wakdXVcNXKlK1-VMT5WKlnHquMi7gMk3uIuXuEf87i7KZqH-13GVbwaqNV_7zj-pWgObGgZZPzUING_2tWJGlaLNkM4pUU6ttrVAdjyOn9bjTUBlDw2; __AntiXsrfToken=cde04d3ee0d74a9ba9af775e3dc13bb4
Host: localhost:60825
Referer: http://localhost:60825/VFA4/Account/Login?ReturnUrl=%2fVFA4%2fAdmin%2fAdm-VFAMembers.aspx
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.72 Safari/537.36
" />
</item>
<item
name="APPL_MD_PATH">
<value
string="" />
</item>
<item
name="APPL_PHYSICAL_PATH">
<value
string="C:\inetpub\wwwroot\VFA4\" />
</item>
<item
name="AUTH_TYPE">
<value
string="" />
</item>
<item
name="AUTH_USER">
<value
string="" />
</item>
<item
name="AUTH_PASSWORD">
<value
string="*****" />
</item>
<item
name="LOGON_USER">
<value
string="DAVE-PC\Dave" />
</item>
<item
name="REMOTE_USER">
<value
string="" />
</item>
<item
name="CERT_COOKIE">
<value
string="" />
</item>
<item
name="CERT_FLAGS">
<value
string="" />
</item>
<item
name="CERT_ISSUER">
<value
string="" />
</item>
<item
name="CERT_KEYSIZE">
<value
string="" />
</item>
<item
name="CERT_SECRETKEYSIZE">
<value
string="" />
</item>
<item
name="CERT_SERIALNUMBER">
<value
string="" />
</item>
<item
name="CERT_SERVER_ISSUER">
<value
string="" />
</item>
<item
name="CERT_SERVER_SUBJECT">
<value
string="" />
</item>
<item
name="CERT_SUBJECT">
<value
string="" />
</item>
<item
name="CONTENT_LENGTH">
<value
string="0" />
</item>
<item
name="CONTENT_TYPE">
<value
string="" />
</item>
<item
name="GATEWAY_INTERFACE">
<value
string="" />
</item>
<item
name="HTTPS">
<value
string="" />
</item>
<item
name="HTTPS_KEYSIZE">
<value
string="" />
</item>
<item
name="HTTPS_SECRETKEYSIZE">
<value
string="" />
</item>
<item
name="HTTPS_SERVER_ISSUER">
<value
string="" />
</item>
<item
name="HTTPS_SERVER_SUBJECT">
<value
string="" />
</item>
<item
name="INSTANCE_ID">
<value
string="" />
</item>
<item
name="INSTANCE_META_PATH">
<value
string="" />
</item>
<item
name="LOCAL_ADDR">
<value
string="::1" />
</item>
<item
name="PATH_INFO">
<value
string="/VFA4/Account/Scripts/jquery.flexslider-min.js" />
</item>
<item
name="PATH_TRANSLATED">
<value
string="C:\inetpub\wwwroot\VFA4\Account\Scripts\jquery.flexslider-min.js" />
</item>
<item
name="QUERY_STRING">
<value
string="" />
</item>
<item
name="REMOTE_ADDR">
<value
string="::1" />
</item>
<item
name="REMOTE_HOST">
<value
string="::1" />
</item>
<item
name="REMOTE_PORT">
<value
string="" />
</item>
<item
name="REQUEST_METHOD">
<value
string="GET" />
</item>
<item
name="SCRIPT_NAME">
<value
string="/VFA4/Account/Scripts/jquery.flexslider-min.js" />
</item>
<item
name="SERVER_NAME">
<value
string="localhost" />
</item>
<item
name="SERVER_PORT">
<value
string="60825" />
</item>
<item
name="SERVER_PORT_SECURE">
<value
string="0" />
</item>
<item
name="SERVER_PROTOCOL">
<value
string="HTTP/1.1" />
</item>
<item
name="SERVER_SOFTWARE">
<value
string="" />
</item>
<item
name="URL">
<value
string="/VFA4/Account/Scripts/jquery.flexslider-min.js" />
</item>
<item
name="HTTP_CONNECTION">
<value
string="keep-alive" />
</item>
<item
name="HTTP_ACCEPT">
<value
string="*/*" />
</item>
<item
name="HTTP_ACCEPT_ENCODING">
<value
string="gzip, deflate" />
</item>
<item
name="HTTP_ACCEPT_LANGUAGE">
<value
string="en-US,en;q=0.8" />
</item>
<item
name="HTTP_COOKIE">
<value
string=".ASPXANONYMOUS=YUThibsmzwEkAAAANWNhZGVjOTItNGQzNS00NmM3LTk3NjYtMTBkODAyYTBiODJhdYxJPubvb1GGRcsjrVicS0N3hCM1; VFA=ID=0&Name=Visitor&ACLSite=0&LoggedIn=false&Profile=0&Greeting=Visitor&Email=; FCOCRV.ASPXAUTH=2EB2E728E7546828599E7059AC071774F1B68DE36945B303364F8DE61A99F4DAEA1378B800DE77E4AD01EDCD1280072326E94CC7F9195A9AE1C8D5B829467129E14E9370F038922195F7D7FC6D7AB38936BBBC59C6C51B406783DA5C6D6567F00CB2B2AF25FD94881D778037C0EB183F8E009861; VFAanon=82GiHFGPKOy-L41M6_huRwSQi3a9FrKsTxn8DLe9u9G-5_4E45PebhWPaRXIcrD75UH17jCEDam8dBaRxfr7MOVXANsTmfdxLNxfGfGsWnq2y7yULGQg7BcCnFVfqmoMWOEp-w2; Violette=bIkdCP9-GSCYa2OhlgT3wakdXVcNXKlK1-VMT5WKlnHquMi7gMk3uIuXuEf87i7KZqH-13GVbwaqNV_7zj-pWgObGgZZPzUING_2tWJGlaLNkM4pUU6ttrVAdjyOn9bjTUBlDw2; __AntiXsrfToken=cde04d3ee0d74a9ba9af775e3dc13bb4" />
</item>
<item
name="HTTP_HOST">
<value
string="localhost:60825" />
</item>
<item
name="HTTP_REFERER">
<value
string="http://localhost:60825/VFA4/Account/Login?ReturnUrl=%2fVFA4%2fAdmin%2fAdm-VFAMembers.aspx" />
</item>
<item
name="HTTP_USER_AGENT">
<value
string="Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.72 Safari/537.36" />
</item>
</serverVariables>
<cookies>
<item
name=".ASPXANONYMOUS">
<value
string="YUThibsmzwEkAAAANWNhZGVjOTItNGQzNS00NmM3LTk3NjYtMTBkODAyYTBiODJhdYxJPubvb1GGRcsjrVicS0N3hCM1" />
</item>
<item
name="VFA">
<value
string="ID=0&Name=Visitor&ACLSite=0&LoggedIn=false&Profile=0&Greeting=Visitor&Email=" />
</item>
<item
name="FCOCRV.ASPXAUTH">
<value
string="2EB2E728E7546828599E7059AC071774F1B68DE36945B303364F8DE61A99F4DAEA1378B800DE77E4AD01EDCD1280072326E94CC7F9195A9AE1C8D5B829467129E14E9370F038922195F7D7FC6D7AB38936BBBC59C6C51B406783DA5C6D6567F00CB2B2AF25FD94881D778037C0EB183F8E009861" />
</item>
<item
name="VFAanon">
<value
string="82GiHFGPKOy-L41M6_huRwSQi3a9FrKsTxn8DLe9u9G-5_4E45PebhWPaRXIcrD75UH17jCEDam8dBaRxfr7MOVXANsTmfdxLNxfGfGsWnq2y7yULGQg7BcCnFVfqmoMWOEp-w2" />
</item>
<item
name="Violette">
<value
string="bIkdCP9-GSCYa2OhlgT3wakdXVcNXKlK1-VMT5WKlnHquMi7gMk3uIuXuEf87i7KZqH-13GVbwaqNV_7zj-pWgObGgZZPzUING_2tWJGlaLNkM4pUU6ttrVAdjyOn9bjTUBlDw2" />
</item>
<item
name="__AntiXsrfToken">
<value
string="cde04d3ee0d74a9ba9af775e3dc13bb4" />
</item>
</cookies>
</error>
I cannot determine if the error is in the ELMAH process or in the underlying code somewhere. I have checked the email info in web.config related to ELMAH and all email addresses are properly formatted.
Everything had been working fine on the development machine until sometime in December, when all of a sudden this came up.

How to get SOAP response data?

This is the XML response back from webservice.
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns="urn:OrientalServices1">
<SOAP-ENV:Body>
<ns1:Get_CategoryResponse xmlns:ns1="http://schemas.xmlsoap.org/soap/envelope/">
<return xsi:type="SOAP-ENC:Array" SOAP-ENC:arrayType="tns:responseGetCategoryByID[11]">
<item xsi:type="tns:responseGetCategoryByID">
<id xsi:type="xsd:int">1</id>
<name xsi:type="xsd:string">國內</name>
</item>
<item xsi:type="tns:responseGetCategoryByID">
<id xsi:type="xsd:int">2</id>
<name xsi:type="xsd:string">財經</name>
</item>
<item xsi:type="tns:responseGetCategoryByID">
<id xsi:type="xsd:int">3</id>
<name xsi:type="xsd:string">社會</name>
</item>
<item xsi:type="tns:responseGetCategoryByID">
<id xsi:type="xsd:int">4</id>
<name xsi:type="xsd:string">國際</name>
</item>
<item xsi:type="tns:responseGetCategoryByID">
<id xsi:type="xsd:int">10</id>
<name xsi:type="xsd:string">龍門陣</name>
</item>
<item xsi:type="tns:responseGetCategoryByID">
<id xsi:type="xsd:int">11</id>
<name xsi:type="xsd:string">言論</name>
</item>
<item xsi:type="tns:responseGetCategoryByID">
<id xsi:type="xsd:int">6</id>
<name xsi:type="xsd:string">名家</name>
</item>
<item xsi:type="tns:responseGetCategoryByID">
<id xsi:type="xsd:int">8</id>
<name xsi:type="xsd:string">娛樂</name>
</item>
<item xsi:type="tns:responseGetCategoryByID">
<id xsi:type="xsd:int">5</id>
<name xsi:type="xsd:string">體育</name>
</item>
<item xsi:type="tns:responseGetCategoryByID">
<id xsi:type="xsd:int">7</id>
<name xsi:type="xsd:string">專題</name>
</item>
<item xsi:type="tns:responseGetCategoryByID">
<id xsi:type="xsd:int">9</id>
<name xsi:type="xsd:string">特輯</name>
</item>
</return>
</ns1:Get_CategoryResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
In this XML, I got 11 items in an array. How can I deserialize it and get the item one by one?
You could use an XML parser.
There is support for a couple of methods in Cocoa - but since you've asked such a general question, all I can do is provide a general answer.
There is an Introduction to Event Driven XML Programming on the Apple Developer site