2011-01-26 8 views
0

私はSOAP Responseの周りの封筒を取り除く方法を探しています。データはJSONに入っていますが、実際にはレベルがないので、エンベロープを取り除くことができれば、データをjsonファイルに入れて解析することができます。私の唯一の問題は、サーバーからの応答を取得すると、データを囲むエンベロープです。初心者のIPhoneのSoap Envelopeを取り除く

私は多く見えましたが、答えが見つからないようです。どのようなヘルプとサンプルコードも感謝しています!

これは私がこれを引っ張って探しています私のSOAP応答

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> 
    <s:Body> 
     <AuthenticateUserResponse xmlns="http://tempuri.org/"> 
     <AuthenticateUserResult>{"isValid":true,"isContractor":false,"isExpired":false,"isApproved":true,"userID":"e2be94cb-2e74-4eae-91a9-d874735b8647","userType":"DUMP ","trucks":1}</AuthenticateUserResult> 
     </AuthenticateUserResponse> 
    </s:Body> 
</s:Envelope> 

です。

{"isValid":true,"isContractor":false,"isExpired":false,"isApproved":true,"userID":"e2be94cb-2e74-4eae-91a9-d874735b8647","userType":"DUMP ","trucks":1} 

私は誤ったアプローチをとっている可能性がありますが、どんな助けでも大歓迎です。

答えて

1

これは、あなたの必要に応じて過剰であるかもしれないし、そうでないかもしれませんが、私はそれをやっています。

自分自身にNSXMLパーサーを登録してください。デリゲートを設定します。デリゲートで

、これらのメソッドを探します。

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName attributes:(NSDictionary *)attributeDict 

- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName 

- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)characters 

をdidStartElement法では、elementNameがAuthenticateUserResultであるかどうかを確認します。そうである場合は、ブール値isInAuthenticateUserResult = YESを設定します。

didEndElementメソッドでは、ブール値をnoに設定します。

foundCharactersメソッドでブール値がYESの場合、文字はJSONです。

+0

ありがとうございました。 – mike

1

エンベロープが単なるXMLであると考えると、NSXMLParserを使用してXMLを解析し、必要な値を取得していますか?ストリームパーサーを書くのが嫌いなら、TouchXMLのようなものをチェックアウトすることもできます。