我正在使用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讀取日期,並正確格式化它們。
任何幫助表示讚賞。
保羅
仔細檢查您的日期格式。它必須是完全完美的,甚至存在的字符串。嘗試使用這個:'[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
是的,你是對的,非常感謝sudo – 2011-04-23 20:38:36
所以這是正確的?我會將它作爲答案發布,以便將其標記爲已解決。 – 2011-04-23 20:45:15