gpt4 book ai didi

ios - iOS 中的 XML 解析问题

转载 作者:行者123 更新时间:2023-11-28 22:19:20 25 4
gpt4 key购买 nike

我正在从 Web 服务中提取信息并正在解析 XML 字符串,但在我的代码中,XML 部分调用了 4 次,我不知道为什么。

这是我的代码;

- (void)connectionDidFinishLoading:(NSURLConnection *)connection {

NSLog(@"Data has been loaded");

NSString *responseString = [[NSString alloc] initWithData:webData encoding:NSUTF8StringEncoding];


NSLog(@"Respose Data :%@",responseString) ;


NSData *xmlData = [responseString dataUsingEncoding:NSASCIIStringEncoding];

xmlParser = [[NSXMLParser alloc] initWithData:xmlData];

[xmlParser setDelegate:self];

[xmlParser parse];

}

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

// @"Element started %@",elementName);
currentElement=elementName;
}
-(void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{

count++;

if ([temp isEqualToString:@"true"]) {

[SVProgressHUD showSuccessWithStatus:@"Saved"];

[NSTimer scheduledTimerWithTimeInterval:0.5 target:self selector:@selector(loginPage) userInfo:nil repeats:NO];

}else{
[SVProgressHUD dismiss];
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Warning"
message:@"Don't Save"
delegate:self
cancelButtonTitle:@"Okay"
otherButtonTitles:nil, nil];

[alertView show];

}

NSLog(@"count = %i",count);
currentElement=@"";
temp = @"";
}

-(void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{

temp = [temp stringByAppendingString:string];

}

这是我的 XML 返回字符串;

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Body><signUpResponse xmlns="http://tempuri.org/"><signUpResult>true</signUpResult></signUpResponse></s:Body></s:Envelope>

计数输出为; 计数 = 1
计数 = 2
计数 = 3
计数 = 4

我做错了什么?感谢您的回答和兴趣。

最佳答案

你的xml中有4个结束标签,分别是</signUpResult></signUpResponse></s:Body></s:Envelope> , 每次读取结束标签都会调用didEndElement方法,所以计数为4。

在您的情况下,您可以将代码包含在 if 语句中以避免被调用 4 次。代码如下:

if([elementName isEqualToString:@"signUpResult"]){
if ([temp isEqualToString:@"true"]) {

[SVProgressHUD showSuccessWithStatus:@"Saved"];

[NSTimer scheduledTimerWithTimeInterval:0.5 target:self selector:@selector(loginPage) userInfo:nil repeats:NO];

}else{
[SVProgressHUD dismiss];
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Warning"
message:@"Don't Save"
delegate:self
cancelButtonTitle:@"Okay"
otherButtonTitles:nil, nil];

[alertView show];

}
}

关于ios - iOS 中的 XML 解析问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20809835/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com