XML解析问题

时间:2012-07-28 00:29:38

标签: objective-c ios xml

我在文档目录中有一个XML文件,我试图解析(在表格视图中显示)。

<tickets>
  <ticket>
    <tid>11111</tid>
    <status>Open</status>
    <summary>Summary 1</summary>  //want to grab this
    <notes>Notes 1</notes>
  </ticket>
  <ticket>
    <tid>11112</tid>
    <status>Open</status>
    <summary>Summary 2</summary>  //want to grab this
    <notes>Notes 2</notes>
  </ticket>

  ...

</tickets>

我希望summary显示在表格视图中。现在,我只是想让一个NSMutableArray填充所有的汇总字符串。

我正在使用XMLReader来创建所有内容的字典。然后,我使用以下代码尝试进行汇总。

NSData *data = [NSData dataWithContentsOfFile:save];
NSString *xml = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

// Parse the XML into a dictionary
NSError *parseError;
NSDictionary *xmlDictionary = [XMLReader dictionaryForXMLString:xml error:&parseError];

NSDictionary *ticketsArray = [xmlDictionary objectForKey:@"tickets"];
NSDictionary *ticketArray = [ticketsArray objectForKey:@"ticket"];;
//Now have a dictionary with ticket... what to do next?

我不确定下一步该去哪儿。您是否知道如何将所有摘要转换为NSMutableArray?如果首选,我可以使用XMLReader以外的其他内容。

2 个答案:

答案 0 :(得分:1)

NSMutableArray *summaries = [NSMutableArray array];

for (NSString *key in [ticketArray allKeys])
{
    if ([key isEqualToString:@"summary"]) 
        [summaries addObject:[ticketArray objectForKey:key]];
}

警告:从内存中编写而未经过测试。 另外,你有一个名为ticketArray的词典,这让我有点困惑,但我认为那实际上是一本字典。

答案 1 :(得分:1)

试试这个:

for (NSDictionary *d in ticketArray) {
    NSDictionary *d2 = [d objectForKey:@"summary"];
    [summaries addObject:[d2 objectForKey:@"text"]];
}

您获取摘要文本的字符串可能需要修剪,但基本想法应该有效。