我正在寻找一种方法来删除SOAP Response周围的信封。数据是JSON,但实际上没有级别,所以如果我可以删除信封,我知道我可以解析它,因为我将数据放入json文件并让解析器为它工作。当我从服务器得到响应时,我唯一的问题是数据周围的包络。
我看了很多但似乎无法找到答案。任何帮助和示例代码表示赞赏!
这是我的肥皂回应
<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}
我可能采取了错误的做法,但非常感谢任何帮助。
答案 0 :(得分:1)
考虑到信封只是XML,您是否使用NSXMLParser来解析XML并获得所需的值?如果您不喜欢编写流解析器,还可以查看类似TouchXML的内容。
答案 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。