gpt4 book ai didi

iphone - 在xml解析中找不到子元素时如何向数组添加默认值?

转载 作者:搜寻专家 更新时间:2023-10-30 20:13:05 24 4
gpt4 key购买 nike

我是 iphone 开发的新手。我正在解析一个 XML 页面并在 tableview 中显示内容。在 XML 页面的某个 block 中,缺少子元素,我想在我的数组中添加一个值 o,当子元素不喜欢特定的 block 。我的 XML 文件就像

 <entry>
<id>xxx </id>
<title>xxxxx</title>
<gd:ratings numRaters="2"/>
</entry> ..................................>first block
<entry>
<id>xxx </id>
<title>xxxxx</title>
</entry> ....................................>Second block
<entry>
<id>xxx </id>
<title>xxxxx</title>
<gd:ratings numRaters="2"/>
</entry> .....................................>Third block

我正在解析 gd:ratings 标签并在 TableView 中显示其属性 numRates 值。我有一个可变数组,它存储 numRates 的值。当第二个 block 被解析时,我必须在数组中添加对象“O”,因为它不包含 gd:ratings 标签。因为该值存在于属性标签中,对于检索内容并将其添加到可变数组是在 NSXML 解析器 DidStartElement 方法中完成的。

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict{            

currentElement = [elementName copy];
if ([elementName isEqualToString:@"entry"]) {

entry = [[NSMutableDictionary alloc] init];
currentTitle = [[NSMutableString alloc] init];
currentDate = [[NSMutableString alloc] init];
NSLog(@"inside image1 ");
}else if([elementName isEqualToString:@"media:thumbnail"])
{ currentImage = [[NSMutableString alloc] init];
if(myUrl == nil){
myUrl = [NSString stringWithString:[attributeDict objectForKey:@"url"]];
}
[currentImage appendString:myUrl];
[stories1 addObject:currentImage];
myUrl=nil;
} else if([elementName isEqualToString:@"gd:rating"])
{
currentRating=[[NSMutableString alloc]init];

myRatings=[NSString stringWithString:[attributeDict objectForKey:@"numRaters"]];

[currentRating appendString:myRatings];
[stories2 addObject:currentRating];
}
}

由于有 25 个入口标签 block ,其中 10 个 block 没有 gd 评级元素。所以数组 stories2 数组只有 15 个值。所以我无法按顺序在 TableView 中显示它。有没有办法检索“找到字符”方法中的属性标记。请帮帮我。谢谢。

最佳答案

可以使用didEndElement方法:当外层元素结束时,检查子元素是否被添加到数组中。

您可以使用 iVar BOOL entryHasRating 并执行以下操作:

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict{            

currentElement = [elementName copy];
if ([elementName isEqualToString:@"entry"]) {
entryHasRating = NO;
...
} else if ([elementName isEqualToString:@"gd:rating"]){
entryHasRating = YES;
...
}
}

然后当一个元素结束时:

- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName {
if ([elementName isEqualToString:@"entry"]&& !entryHasRating) {
[stories2 addObject:@"No Rating"];
entryHasRating = YES;
}
...
}

关于iphone - 在xml解析中找不到子元素时如何向数组添加默认值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2229189/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com