尽管我看过所有教程,但我很难理解如何使用 NSXMLParser ......
我有以下 XML 文件,例如:
<rss>
<channel>
<title>The Title</title>
<link>A URL</link>
<language>English</language>
<item>
<name>John</name>
<title>John4034</title>
<city>LA</city>
<country>USA</country>
</item>
....
<item>
<name>Marc</name>
<title>Marc2942</title>
<city>London</city>
<country>England</country>
</item>
</channel>
</rss>
我的目标是将所有项目存储在 NSMutableArray 的项目中。我的类 Item 有 4 个 NSString(名称、标题、城市、国家)。
这是我的 XMLParser.m 文件:
- (id) loadXMLbyURL : (NSString *) urlString
{
items = [[NSMutableArray alloc] init];
NSURL *url = [NSURL URLWithString:urlString];
NSData *data = [NSData dataWithContentsOfURL:url];
parser = [[NSXMLParser alloc] initWithData:data];
parser.delegate = self;
[parser parse];
return self;
}
- (void) parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
currentNodeContent = (NSMutableString *) [string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
}
- (void) parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict
{
if([elementName isEqualToString:@"item"]) currentItem = [Item alloc];
}
- (void) parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
{
if([elementName isEqualToString:@"name"]) [currentItem setName:currentNodeContent];
if([elementName isEqualToString:@"title"]) [currentItem setTitle:currentNodeContent];
if([elementName isEqualToString:@"city"]) [currentItem setCity:currentNodeContent];
if([elementName isEqualToString:@"country"]) [currentItem setCountry:currentNodeContent];
}
if([elementName isEqualToString:@"item"])
{
[self.items addObject:currentItem];
currentItem = nil;
currentNodeContent = nil;
}
}
但是有了这一切,我有两个问题:
- 我的项目数组只包含 108 个索引,而我的 XML 文件有 299 个。
- 我的项目属性中没有数据......当我尝试在日志中打印它时,一切都是(空的)。
请帮忙 !