nsdata в nsstring в nsdata

Я звоню в веб-службы. Веб-сервис возвращает данные в формате xml. Теперь проблема в том, что данные xml не принимаются в правильном формате. Вместо "‹", ">" возвращается в виде html.

Поэтому я присвоил xmldata NsMutableString и заменил escape-символы, чтобы формат данных xml был правильным. Затем я переназначил NSMutableString на NSData, чтобы иметь возможность анализировать теги. но проблема в том, что xmlparser останавливается прямо там, где находятся данные xml, где я заменил теги. Дальше не идет. Что происходит?

Это ответ xml от веб-службы, которую я вызвал.

<?xml version="1.0" encoding="ISO-8859-1"?><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/">
<SOAP-ENV:Body>
<ns1:GetCustomerInfoResponse xmlns:ns1="http://aa.somewebservice.com/phpwebservice">
<return xsi:type="xsd:string">
    &lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;&lt;customer&gt;&lt;id&gt;1&lt;/id&gt;&lt;customername&gt;Hitesh&lt;/customername&gt;&lt;phonenumber&gt;98989898&lt;/phonenumber&gt;&lt;/customer&gt;
</return>
</ns1:GetCustomerInfoResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

И это после замены тегов.

<?xml version="1.0" encoding="ISO-8859-1"?><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/">
<SOAP-ENV:Body>
<ns1:GetCustomerInfoResponse xmlns:ns1="http://aa.somewebservice.com/phpwebservice">
<return xsi:type="xsd:string">
<?xml version="1.0" encoding="utf-8"?> 
 <customer><id>1</id><customername>Hitesh</customername><phonenumber>98989898</phonenumber></customer>
</return>
</ns1:GetCustomerInfoResponse>
</SOAP-ENV:Body></SOAP-ENV:Envelope>

Теперь проблема заключается в том, что при анализе данных xml синтаксический анализатор поднимается только до возврата тега. А потом застревает там.


person Jayshree    schedule 12.06.2010    source источник


Ответы (1)


Какой парсер используете? На iPhone вы можете использовать разные синтаксические анализаторы (например: TouchXML или TinyXML), попробуйте использовать их...

Также я думаю, что вы бы удалили <?xml version="1.0" encoding="utf-8"?> из тега «возврат» или заменили его другим тегом. Затем, когда это необходимо, сделайте обратное преобразование.

person Yakov    schedule 12.06.2010
comment
привет, спасибо. это была как раз проблема. это сработало, как только я удалил этот тег из ответа. - person Jayshree; 12.06.2010