如何解决NSXML解析器读取属性
| 我有一个重复的元素,我需要读取它的属性并将其发送给委托 xml是:<special>
<day date=\"22/04/2011\" name=\"Easter Friday\">Closed</day>
<day date=\"23/04/2011\" name=\"Easter Saturday\">10:00-16:00</day>
<day date=\"24/04/2011\" name=\"Easter Sunday\">Closed</day>
<day date=\"25/04/2011\" name=\"Anzac Day\">13:00-17:00</day>
<day date=\"26/04/2011\" name=\"Easter Tuesday\">09:00-18:00</day>
</special>
我只过去了代表的日期和名称的最后一个属性,我知道为什么会这样,但是我不知道如何解决。有人能帮我吗
这是我的目标C代码
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName
namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName
attributes:(NSDictionary *)attributeDict {
if ([elementName isEqualToString:@\"special\"]) {
storeAppDelegate.openingHoursSpecialDelegate = [[NSMutableArray alloc] init];
}else if ([elementName isEqualToString:@\"day\"]) {
openingHoursView = [[OpeningHoursView alloc] init];
openingHoursView.name = [attributeDict objectForKey:@\"name\"];
openingHoursView.date = [attributeDict valueForKey:@\"date\"];
}
}
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName
namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName {
if ([elementName isEqualToString:@\"special\"])
return;
if ([elementName isEqualToString:@\"day\"]){
[storeAppDelegate.openingHoursSpecialDelegate addObject:openingHoursView];
[openingHoursView release];
openingHoursView = nil;
}
}
OpeningHoursSpecialDelegate是应用程序委托中的可变数组,而OpeningHoursView是一个NSObject,在另一个类中的名称和日期为字符串。它们还获取应用程序委托的值,并且它也是XML文件中\“ date \”和\“ name \”属性的最后读取值。
我正在使用NSXML解析器
所以我的问题又是如何获取\“ openingHoursView.name \”和\\“ openingHoursView.date \”来写入他们获得的每个值openHoursSpecialDelegate而不是像现在这样覆盖它们
解决方法
我找不到任何错误的代码。我已经将上面的代码放入一个小的测试项目中(进行了微小的更改,使其可以独立运行),并且对我来说运行良好。
数组(
\“复活节,2011年4月22日\”,
\“ 2011年4月23日复活节星期六\”,
\“复活节,2011年4月24日\”,
\“ Anzac Day,25/04/2011 \”,
\“复活节,2011年4月26日,\”)
示例项目
您需要更改我在test2AppDelegate类中硬编码的路径,以指向包含上面发布的XML的文件。
,我已经在我的项目中锻炼了这个问题。但是我正在使用libxml2。
问题是(天节点)您必须将5个不同的值设置为相同的键(天),这就是为什么要获取last属性的原因。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。