2011-05-23 97 views
0

我有一個重複元素,我需要看它的屬性,並將它們發送到委託NSXML解析器讀取atributes

的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」寫每次他們去openingHoursSpecialDelegate價值,而不是將其覆蓋,因爲它現在怎麼

THX

+0

從哪裏設置對象在attributeDict – Rams 2011-05-23 13:02:51

+0

真的不明白你的問題。請解釋 – Spire 2011-05-23 13:46:43

回答

1

我找不到任何代碼錯誤。我已經把上面的代碼放到了一個小測試項目中(只需稍作修改就可以獨立運行),它對我來說運行良好。

陣列( 「復活節星期五,22/04/2011」, 「復活節星期六,23/04/2011」, 「復活節,24/04/2011」, 「澳新軍團日,25/04/2011" , 「復活節星期二,26/04/2011」)

Example project

你需要改變,我在班上test2AppDelegate硬編碼的路徑,指向一個包含您在上面發佈的XML的文件。

+0

是的,我知道這種解析工作。我試圖讓價值第三課,它是在iOS而不是MacOS。我真的不知道區別從來沒有純粹的可可粉。我試圖通過委託給另一個文件,我不能。請諮詢 – Spire 2011-05-23 13:46:03

+0

恐怕我不明白你的問題。你能上傳一個展示這個問題的xcode項目嗎?沒有看到更多的代碼,我無法找到你有什麼問題。 (順便說一句,它應該在MacOS和iOS中工作) – 2011-05-23 13:54:05

+0

我的問題是,我有一個文件(類)是XMLparser並讀取XML文件,然後它將值發送到AppDelegate,在這裏我只得到最後一個值,不是所有的。任何方式thx爲您的時間和幫助 – Spire 2011-05-25 08:53:25

1

我已經在我的項目中鍛鍊了這個問題,但我使用的是libxml2。
問題是(天節點)你必須設置5個不同的值到同一個鍵(天)這就是爲什麼你得到的最後一個屬性。