我在网络服务器上有一个非常大的xml文件(17 MB),它不断更新(每月一次或两次)。当用户触发更新时,我将XML解析为Core数据。现在我想在我的应用程序唤醒/启动期间检查本地解析的数据库是否是最新的,或者服务器上是否有更新的xml。
xml是由非IT公司通过MS Office创建的,所以我真的不希望他们对xml进行很多更改。现在我只有
<dataroot xmlns:od="urn:schemas-microsoft-com:officedata" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="someXML.xsd" generated="2012-06-28T12:53:12">
生成dataroot的属性。
有关如何快速,整洁地创建文件日期的任何提示?
答案 0 :(得分:1)
我正在给你重要的代码。我在.h文件中获取一个字符串变量,并在解析didstartelement解析方法中初始化字符串。检查以下代码。
@interface TestViewController: UIViewController <NSXMLParserDelegate> {
NSString *generatedDate;
}
@end
#import "TestViewController.h"
@implementation TestViewController
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict {
if ( [elementName isEqualToString:@"dataroot"] ) {
generatedDate = [[NSString alloc]initWithFormat:@"%@",[[attributeDict objectForKey:@"generated"] retain]];
}
}
@end
答案 1 :(得分:0)
您是否可以在服务器上存储和检查创建或修改的日期,并将其与您存储的值进行比较?这样,如果它是相同的,你甚至不需要费心去阅读XML。 您可能会得到误报(日期已更改,但数据未更改),但您不会得到误报(数据已更改但日期尚未更改),因此会减少大量处理。
一旦你决定它已经改变了,你可以传递XML来检查日期,如果它在文件的特定位置(即开头),只需读取大部分文件并搜索字符串
答案 2 :(得分:0)
您可以使用NSXMPParser获取生成的时间。使用以下
NSXMLParser *parser = [[NSXMLParser alloc] initWithData:yourXMLData];
[parser setDelegate:self];
[parser parse];
这将调用您的委托方法。您需要处理以下委托方法以获取日期
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName attributes:(NSDictionary *)attributeDict {
NSString *generatedDate = [attributeDict objectForKey:@"generated"];
}
希望这有帮助