0

尽管我看过所有教程,但我很难理解如何使用 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 个。
  • 我的项目属性中没有数据......当我尝试在日志中打印它时,一切都是(空的)。

请帮忙 !

4

1 回答 1

0

如果有人有同样的问题,我终于找到了解决方案。

  • 未检查所有 XML 文件的问题是由于 XML 文件中的 PCDATA 错误。
  • The problem of getting nothing in the NSStrings has been solved in this thread : NSXMLParser issue : don't get all data?
于 2012-05-28T15:56:06.710 回答