2011-04-20 54 views
1

我正在使用TBXML解析器。我不確定這是否特定於TBXML。我有一個XML文件,其中包含一個日期。然後我使用TBXML解析這個文件。然後我想使用NSDateFormatter格式化這個日期,但是當我使用NSLog進行調試和輸出時,它顯示爲(null)。使用TBXML解析iOS SDK中XML的日期

這裏是我的XML:

<locations> 
    <location> 
     <place>null</place> 
     <geo>null</geo> 
     <location_date>2010-12-25 10:15:15 +0000</location_date> 
    </location> 
    <location> 
     ... 
    </location> 
</locations> 

這是我如何解析。我已經加載好了XML文件(我已經測試了其他節點,並且可以輸出值,因此它讀取的XML很好,我檢測到了根節點,然後在節點周圍做了一個while循環,我創建了一個Location類具有相關屬性保存檢索到的XML節點的值。這些都是NSString的,但是我也嘗試的NSDate的locationDate。

我應該在節點不同的存儲日期?幸福在需要時提供更多的代碼。

if (root) { 
     // search for the first location element within the root element's children 
     TBXMLElement * location = [TBXML childElementNamed:@"location" parentElement:root]; 
     NSDateFormatter *formatter=[[NSDateFormatter alloc] init]; 
     [formatter setDateFormat:@"yyyyMMdd"]; 

     // if an location element was found 
     while (location != nil) { 

      // instantiate an location object 
      Location * aLocation = [[Location alloc] init]; 

      TBXMLElement * locationDate = [TBXML childElementNamed:@"location_date" parentElement:location]; 

      // if we found a locationDate 
      if (locationDate != nil) { 
       aLocation.locationDate = [TBXML textForElement:locationDate]; 
       NSDate *locDate=[formatter dateFromString:aLocation.locationDate]; 
       NSLog(@"the current location date is %@", locDate); 
      } 

      [locations addObject:aLocation]; 
     [aLocation release]; 

      // find the next sibling element named "location" 
      location = [TBXML nextSiblingNamed:@"location" searchFromElement:location]; 

     } 
    } 

控制檯輸出我得到的是:

the current location date is (null) 

這個想法將然後把它放在一個格式,所以我可以比較現在的日期,但我甚至無法從XML讀取日期,並正確格式化它們。

任何幫助表示讚賞。

保羅

+0

仔細檢查您的日期格式。它必須是完全完美的,甚至存在的字符串。嘗試使用這個:'[formatter setDateFormat:@「yyyy-MM-dd hh:mm:ss + ZZZ」];'。然而,不確定這是否完全正確。檢查這是一個更完整的參考:http://cocoawithlove.com/2009/05/simple-methods-for-date-formatting-and.html – 2011-04-21 03:07:09

+0

是的,你是對的,非常感謝sudo – 2011-04-23 20:38:36

+0

所以這是正確的?我會將它作爲答案發布,以便將其標記爲已解決。 – 2011-04-23 20:45:15

回答