ios - 存储到 NSString 中的 SOAP 响应需要被解析

标签 ios objective-c xml soap

我有这个 SOAP 请求,我的响应已存储到 NSString 中,我需要读取此响应并将数据存储到一个字段中。这是我的回复示例:

<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><ReadDataResponse xmlns="http://sysman.it/webservices/"><ReadDataResult>success</ReadDataResult><Data><TableName>V_CP_NOTIFICATIONS_DEVICEID</TableName><values><ArrayOfCpFieldAndValue><cpFieldAndValue><Name /><Value>0</Value><Type>IntegerType</Type><CompOperator>=</CompOperator></cpFieldAndValue></ArrayOfCpFieldAndValue></values><keys><cpFieldAndValue><Name>DEVICE_ID</Name><Value>1006be49b73a98af</Value><Type>VarcharType</Type><CompOperator>=</CompOperator></cpFieldAndValue><cpFieldAndValue><Name>PUSH_READCNT</Name><Value>0</Value><Type>IntegerType</Type><CompOperator>=</CompOperator></cpFieldAndValue></keys><orClause>false</orClause></Data></ReadDataResponse></soap:Body></soap:Envelope>

<cpFieldAndValue><Name /><Value>0</Value>我需要将该数字存储到一个变量中。这是我目前的代码:

NSData *postData = [sSOAPMessage dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];

NSString *postLength = [NSString stringWithFormat:@"%lu", [postData length]];

NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
[request setURL:[NSURL URLWithString:@"----"]];
[request setHTTPMethod:@"POST"];
[request addValue:@"text/xml" forHTTPHeaderField:@"Content-Type"];
[request setHTTPBody:postData];

NSURLSession *session = [NSURLSession sessionWithConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]];
[[session dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
    NSString *requestReply = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding];
    NSLog(@"Request reply: %@", requestReply);

}] resume];

感谢您的帮助。

最佳答案

那你可以引用这个SO Answer .您必须复制 XMLParser.hXMLParser.m文件和使用如下:

NSString *xmlString = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding];
NSDictionary *xmlDoc = [NSDictionary dictionaryWithXMLString:xmlString];
NSInteger value = [[xmlDoc valueForKeyPath:@"soap:Body.ReadDataResponse.Data.values.ArrayOfCpFieldAndValue.cpFieldAndValue.Value"] integerValue];
NSLog(@"%d", value);

输出:

0

关于ios - 存储到 NSString 中的 SOAP 响应需要被解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52964983/

相关文章:

javascript - 如何在 iOS 中动态解析 JSON

android - 使用 attrs 的自定义 View 背景导致崩溃

ios - SKPaymentTransaction 下载数组始终为零?

ios - ReactiveCocoa : why rac_textSignal doesn't work

iPhone Objective-C : How to get a pixel's color of the touched point on an UIImageView?

ios - 向下滑动动画以显示错误

java - 列表的自动 XmlRootElement 包装器

css - XML - 使用 xslt 样式表,没有给出输出

ios - 随机整数循环

ios - iOs 8 上的 Twitter API 有什么问题?