xml 파일을 구문 분석 할 때 콘솔에서 구문 분석 된 데이터 (예 : Speller의 처리 값 ...)를 표시하지만 추가되지는 않습니다. msmutablearray 사용자. 여기에 몇 가지 코드가 있습니다. 문제가 어디에 있습니까? 도와주세요 :구문 분석은 작동하지만 데이터는 nsMutableArray에 저장되지 않습니다.
- (MyData *) initXMLParser {
[super init];
// init array of user objects
users = [[NSMutableArray alloc] init];
return self;
}
- (void)parser:(NSXMLParser *)parser
didStartElement:(NSString *)elementName
namespaceURI:(NSString *)namespaceURI
qualifiedName:(NSString *)qualifiedName
attributes:(NSDictionary *)attributeDict
{
if ([elementName isEqualToString:@"user"]) {
NSLog(@"user element found – create a new instance of User class...");
user = [[User alloc] init];
}
}
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string {
if (!currentElementValue) {
// init the ad hoc string with the value
currentElementValue = [[NSMutableString alloc] initWithString:string];
} else {
// append value to the ad hoc string
[currentElementValue appendString:string];
}
NSLog(@"Processing value for : %@", string);
}
- (void)parser:(NSXMLParser *)parser
didEndElement:(NSString *)elementName
namespaceURI:(NSString *)namespaceURI
qualifiedName:(NSString *)qName
{
if ([elementName isEqualToString:@"users"]) {
// We reached the end of the XML document
return;
}
if ([elementName isEqualToString:@"user"]) {
if ([elementName isEqualToString:@"userName"]) {
[[self user] setUserName:currentElementValue];
}
if ([elementName isEqualToString:@"firstName"]) {
[[self user] setFirstName:currentElementValue];
}
if ([elementName isEqualToString:@"lastName"]) {
[[self user] setLastName:currentElementValue];
}
[users addObject:user];
/*comboarray = [[users arrayForKey:@"ComboBoxValues"]
sortedArrayUsingSelector:@selector(compare:)];*/
// release user object
[user release];
user = nil;
} else {
[user setValue:currentElementValue forKey:elementName];
}
[currentElementValue release];
currentElementValue = nil;
}
-(BOOL)parseDocumentWithData:(NSData *)data {
//NSString * filePath = [[NSBundle mainBundle] pathForResource:@"Users" ofType:@"xml"];
//data = [NSData dataWithContentsOfFile:filePath];
if (data == nil)
return NO;
// this is the parsing machine
NSXMLParser *xmlparser = [[NSXMLParser alloc] initWithData:data];
// this class will handle the events
[xmlparser setDelegate:self];
[xmlparser setShouldResolveExternalEntities:NO];
// now parse the document
BOOL ok = [xmlparser parse];
if (ok == NO)
NSLog(@"error");
else
NSLog(@"OK");
[xmlparser release];
return ok;
}
- (void) dealloc {
[currentElementValue release];
[super dealloc];
}
감사합니다. 그럼이 방법을 삭제해야합니까? – Wael
몇 가지 코드를 변경하려면? – Wael
나는 그것을했지만 여전히 데이터를 저장하지 않았다 : ( – Wael