[英]NSXML parser read attributes
我有一個重復的元素,我需要讀取它的屬性並將它們發送給委托
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是app委托中的可變數組,而OpeningHoursView是一個NSObject,在另一個類中有名稱和日期作為字符串。 它們還獲取app委托的值,它也只是XML文件中“date”和“name”屬性的最后讀取值。 我正在使用NSXML解析器,所以我的問題是如何獲得“openingHoursView.name”和“openingHoursView.date”來將他們獲得的每個值寫入openingHoursSpecialDelegate並且不會覆蓋它們,因為它現在發生了
我發現代碼沒有任何問題。 我已將上面的代碼放入一個小的測試項目中(稍作修改使其獨立運行),它對我運行正常。
數組(“復活節星期五,2011年4月22日”,“復活節星期六,23/04/2011”,“復活節星期日,2011年4月24日”,“澳新軍團日,2011年4月25日”,“復活節星期二, 26/04/2011“)
您需要更改我在類test2AppDelegate中硬編碼的路徑,以指向包含您在上面發布的XML的文件。
我已經在我的項目中解決了這個問題。但我使用的是libxml2。
問題是(日節點)您必須將5個不同的值設置為相同的鍵(日),這就是您獲取最后一個屬性的原因。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.