2011-01-26 63 views
0

我正在尋找一種方法來刪除我的SOAP響應周圍的信封。該數據是在JSON中,但沒有真正的級別,所以如果我可以刪除信封我知道我可以解析它,因爲我把數據放入一個JSON文件,並得到解析器爲它工作。當我從服務器獲得響應時,唯一的問題是圍繞數據的信封。新手IPhone刪除肥皂信封

我看了很多,但不能找到答案。任何幫助和示例代碼表示讚賞!

這是

<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> 

我期待這個拉我的SOAP響應。

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

我可能會採取一個錯誤的方法,但任何幫助,非常感謝。

回答

1

這可能會或可能不會過度滿足您的需求,但以下是我如何做到這一點。

給自己一個NSXMLParser。設置其代表。

在委託,尋找這些方法:

- (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