簡體   English   中英

NSXML解析器讀取屬性

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM