XML 웹 소스에서 콘텐츠 목록을 가져 오려고했습니다. 임 NSXMLParser atm을 사용하고 있습니다. 내가 프로그램을 실행하면 NSXMLParser가 닫는 태그를 찾을 수 없습니다.
- (void)main
{
self.workingArray = [NSMutableArray array];
self.workingPropertyString = [NSMutableString string];
NSURL *url = [[NSURL alloc]initWithString:@"http://myxmlwebsite.xml"];
NSXMLParser *parser = [[NSXMLParser alloc]initWithContentsOfURL:url];
[parser setDelegate:self];
bool result = [parser parse];
NSLog(@"result is ok for xml parse : %@", result ? @"Yes" : @"No");
if (![self isCancelled])
{
self.appRecordList = [NSArray arrayWithArray:self.workingArray];
SubCategoryViewController *subCategoryViewController;
subCategoryViewController.entries = self.appRecordList;
[subCategoryViewController.tableView reloadData];
}
self.workingArray = nil;
self.workingPropertyString = nil;
self.dataToParse = nil;
}
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName
namespaceURI:(NSString *)namespaceURI
qualifiedName:(NSString *)qName
attributes:(NSDictionary *)attributeDict
{
if ([elementName isEqualToString:kUser])
{
self.workingEntry = [[UserFetchAppRecord alloc] init];
}
_elementsToParse = [[NSArray alloc] initWithObjects:
kid,ktitle, nil];
self.storingCharacterData = [_elementsToParse containsObject:elementName];
}
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName
namespaceURI:(NSString *)namespaceURI
qualifiedName:(NSString *)qName
{
if (self.workingEntry)
{
if (self.storingCharacterData)
{
NSString *trimmedString = [self.workingPropertyString stringByTrimmingCharactersInSet:
[NSCharacterSet whitespaceAndNewlineCharacterSet]];
[self.workingPropertyString setString:@""];
if ([elementName isEqualToString:kid])
{
self.workingEntry.ids = trimmedString;
NSLog(@"id : %@" , trimmedString);
}
else if ([elementName isEqualToString:ktitle])
{
self.workingEntry.title = trimmedString;
NSLog(@"ktitle : %@" , trimmedString);
}
}
else if ([elementName isEqualToString:kUser])
{
NSLog(@"inside elementName isEqualToString:kUser");
[self.workingArray addObject:self.workingEntry];
NSUInteger self_workingArrayCount = [self.workingArray count];
self.workingEntry = nil;
}
}
}
지금 콘솔 내가 이러한 결과를 얻을 수
:"ID"결과 = 사실 XML 구문 분석에 대한 확인이다 ": 1 여기
코드입니다"ktitle : usertitle"
. . .
하지만 콘솔에서 탭을 닫지 않은 결과는 "elementName 내부의 isEqualToString : kUser"입니다.
가능한가?
내 XML의 태그는 다음과 같다 : if ([elementName isEqualToString:kUser])
에
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName
namespaceURI:(NSString *)namespaceURI
qualifiedName:(NSString *)qName
에서
<Main>
<user>
<id></id>
<title></title>
</user>
<user>
<id></id>
<title></title>
</user>
.....
</Main>
if ([elementName isEqualToString : kUser])에 'else if'를 변경하십시오. – Akhilrajtr
ooooops !!! 내 큰 실수! 고마워, az 대답 plz에 추가 –