使用TBXML在iOS SDK中解析XML日期

时间:2011-04-20 21:34:44

标签: iphone xml sdk date

我正在使用TBXML解析器。我不确定这是否特定于TBXML。我有一个日期在的XML文件。然后我使用TBXML解析它。然后我想使用NSDateFormatter格式化这个日期,但是当我调试它并使用NSLog输出时,它显示为(null)。

这是我的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。我检测到root然后在节点周围做一个while循环。我创建了一个Location类,具有保存检索到的XML节点值的相关属性。这些都是NSString,但我确实尝试过NSDate for 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中读取日期并正确格式化它们。

感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

您的DateFormat不正确。如果没有完美设置,结果字符串将为nil。试试这种方式:

[formatter setDateFormat:@"yyyy-MM-dd hh:mm:ss +ZZZ"];

点击此处查看NSDateFormatter的精彩参考:

http://cocoawithlove.com/2009/05/simple-methods-for-date-formatting-and.html