iCulture forum | iPhone, iPad,  iPod touch, Apple TV en iOS

iCulture forum | iPhone, iPad, iPod touch, Apple TV en iOS (https://forum.iculture.nl/)
-   Ontwikkelen voor iOS (https://forum.iculture.nl/f133/development/f58/ontwikkelen-voor-ios/)
-   -   Parsing mixed XML soap response (https://forum.iculture.nl/f133/development/f58/ontwikkelen-voor-ios/53505-parsing-mixed-xml-soap-response.html)

MacShack 04-02-10 23:45

Parsing mixed XML soap response
 
Dag,

Ik heb volgens mij iets bijzonders. Ik heb een web service waar ik mee communiceer die is geschreven om te communiceren met .NET applicaties.

Ik doe een aanvraag en de volgende response krijg ik terug:
Code:

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<WebserviceResponse xmlns="http://www.MijnWebSite.Net/Webservices/">
<WebserviceResultaat>
&lt;ExportKlantFormuleResultaat xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&gt;
&lt;Klant&gt;
&lt;KlantNummer&gt;1&lt;/KlantNummer&gt;
&lt;KlantNaam&gt;EenKlantNaam&lt;/KlantNaam&gt;
&lt;KlantAdres/&gt;
&lt;Formule&gt;
&lt;FormuleNummer&gt;1&lt;/FormuleNummer&gt;
&lt;FormuleNaam&gt;EenFormuleNaam&lt;/FormuleNaam&gt;
&lt;/Formule&gt;
&lt;/Klant&gt;
&lt;/ExportKlantFormuleResultaat&gt;
</ExchangeDataResult>
</WebserviceResultaat >
</soap:Body>
</soap:Envelope>

Hierboven zie je volgens mij een mix tussen normale XML en nog raw xml (of zo iets, zo zou ik het noemen even voor het gemak). Hoe parse ik zo'n xml dat ook de elementen na 'WebserviceResultaat' kunnen worden gelezen. Ik dacht eerst aan 'find and replace' om alle tekens weer terug te zetten. Maar toen dacht ik, ik ga straks nog veel meer data ontvangen dat gaat te veel resources kosten. Heeft iemand een idee hoe ik het beste hiermee om kan gaan. Deze NSString komt trouwens van een NSMutableData die ik natuurlijk wil parsen.

Whacko 05-02-10 17:06

Ik weet niet wat een goede manier is om het op de iPhone te parsen. maar als je de mogelijkheid hebt zou ik het in de webservice aanpassen. Het lijkt erop dat ie de inhoud van <WebserviceResultaat> encode als zijnde 1 enkele string. origineel <![CDATA] ofzo? wat er tussen de tag <webserviceresultaat> staat wordt niet opgevat als 'echte xml' maar als data.
De webservice zou dat al moeten omzetten naar xml, en dan heb je het probleem op de iphone niet meer. OP je webserver heb je sowieso meer rekenkracht.

MacShack 05-02-10 17:51

Het punt is dat ik zelf de web service niet heb geschreven. Maar ik kan er misschien wel enige invloed op uit oefenen. Maar als ik dezelfde web service vanuit een .net programma aanroep dan krijg ik wel gewoon normaal resultaat. Ik zal even naar de broncode kijken. Maar kost find en replace veel rekenkracht?

MacShack 05-02-10 18:33

I think I can also use HTML encoding. But we also have to change our web service for future interoperability. Oh ik schrijf het in het Engels. Ik kijk Thuis wel even wat ik kan doen.

Whacko 05-02-10 18:58

Ik vermoed dat find and replace niet zo heel veel rekenkracht kost. Maar als het niet nodig is, doe je het natuurlijk liever niet ;)

Andere applicaties die het wel goed doen, interpreteren de xml misschien al goed voor je of vertalen het onderwater. weet niet.


Alle tijden zijn GMT +2. Het is nu 14:04.