我在iOS中解析下面的xml。
<START>
<ROW>
<COLUMN NAME="NAME">John Smith</COLUMN>
</ROW>
<ROW>
<COLUMN NAME="NAME">Steve Irwin</COLUMN>
</ROW>
</START>
我写了下面的代码。我在字符串“amaps.Name”中需要John Smith,但对我来说字符串将以“NAME”的形式出现。任何人都可以帮我解析这个xml
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName
namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName
attributes:(NSDictionary *)attributeDict {
if([elementName isEqualToString:@"RESULTS"]) {
//Initialize the array.
appDelegate.maps = [[NSMutableArray alloc] init];
}
else if([elementName isEqualToString:@"COLUMN"]) {
//Initialize the book.
MapDetails* amaps = [[MapDetails alloc] init];
amaps.NAME = [attributeDict objectForKey:@"NAME"];
NSLog(@"Reading id value :%@", amaps.NAME);
}
//NSLog(@"Processing Element: %@", elementName);
}
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string {
if(!currentElementValue)
currentElementValue = [[NSMutableString alloc] initWithString:string];
else
[currentElementValue appendString:string];
//NSLog(@"Processing Value: %@", currentElementValue);
}
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName
namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName {
if([elementName isEqualToString:@"RESULTS"])
return;
//There is nothing to do if we encounter the Books element here.
//If we encounter the Book element howevere, we want to add the book object to the array
// and release the object.
if([elementName isEqualToString:@"ROW"])
return;
if([elementName isEqualToString:@"COLUMN"]) {
[appDelegate.maps addObject:amaps];
//[amaps release];
//amaps = nil;
}
else
[amaps setValue:currentElementValue forKey:[elementName lowercaseString]];
[currentElementValue release];
currentElementValue = nil;
}
答案 0 :(得分:1)
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
strVal=string;
}
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName
namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName {
if([elementName isEqualToString:@"RESULTS"])
return;
//There is nothing to do if we encounter the Books element here.
//If we encounter the Book element howevere, we want to add the book object to the array
// and release the object.
if([elementName isEqualToString:@"ROW"])
{
}
if([elementName isEqualToString:@"COLUMN"])
{
amaps.Name=strVal;
}
else
[amaps setValue:currentElementValue forKey:[elementName lowercaseString]];
[currentElementValue release];
currentElementValue = nil;
}
这应该是有效的。