如何设置我的XMLParser来存储非特定数量的对象?

时间:2011-01-31 20:19:33

标签: cocoa-touch ios nsmutablearray nsxmlparser

我正在尝试使用各种类似的标记集来解析XML。我阅读此文件的重点是,我的应用程序可以接收已更新的文档列表。

我现在面临的情况是试图找出如何将未知数量的类似对象存储到数组中,以便我访问程序中的其他位置。

我的XMLParser类具有如下解析器方法(到目前为止):

-(void)parser:(NSXMLParser *)parser 
didStartElement:(NSString *)elementName 
 namespaceURI:(NSString *)namespaceURI 
qualifiedName:(NSString *)qName 
   attributes:(NSDictionary *)attributeDict {
 if (currentTextString) {
  [currentTextString release];
  currentTextString = nil;
 }
 if ([elementName isEqualToString:@"reference_number"]) {
  pdfDocument = [[PDFDocument alloc] init];
  pdfDocument.educationDocumentReference = currentTextString;
 } else if ([elementName isEqualToString:@"name"]) {
  pdfDocument.educationDocumentName = currentTextString;
 } else if ([elementName isEqualToString:@"type"]) {
  pdfDocument.educationDocumentType = currentTextString;
 } else if ([elementName isEqualToString:@"date"]) {
  pdfDocument.educationDocumentDate = [dateformatter dateFromString:currentTextString];
 } else if ([elementName isEqualToString:@"url"]) {
  pdfDocument.educationDocumentURL = currentTextString;
  [resultsMutableArray insertObject:pdfDocument atIndex:resultsArrayCount];
  resultsArrayCount++;
 }
}

我正在尝试在解析器找到第一个标记时创建pdfDocument对象,并在将文档的最后一个标记读入可变数组时存储相同的对象。这可能适用于第一个对象,但是当读取下一组数据时,它根本不起作用。

让这样的事情发生的正确方法是什么?任何人都能指出我在正确的方向吗?我想问题是我可以动态命名文档对象。我找到的唯一选择是创建一个临时表并将信息存储在那里,在获得所有信息后,我将其与永久存储表进行比较。

1 个答案:

答案 0 :(得分:0)

创建临时表可能是最好的选择。我将应用程序设置为使用所有数据读取xml并将其存储在临时表中。下载后,我将与永久表格进行比较,无论哪个条目被标记为已修改,或者新条目将被存储为永久性,临时表格将被清除。