我有两个 NSDictionary 对象,它们是我从服务器返回的一些 xml 数据中主元素的子元素。
xml 看起来像这样:
<Car>
<first element1="1" element2="2">
<second/>
</first>
<first element1="1" element2="2">
<second/>
</first>
<first element1="1" element2="2">
<second/>
</first>
</Car>
我将包含键值的第一个和第二个保存到他们自己的 NSDictionary 对象中。
问题是我可以有几个汽车元素,所以我需要保存一个包含第一个和第二个 NSDictionaries 的汽车元素数组,但我不太确定如何执行此操作。
任何帮助将不胜感激。
这是完整的 XML 示意图:
<Eng>
<Result >
<Series >
<Link/>
<FMF/>
<AlsoLink/>
<Plugins/>
</FMF>
<Sheet >
<Car>
<first >
<second/>
</first>
<second >
<first/>
</second>
</Car>
</Sheet>
</Series>
</Result>
</Eng>
更新问题:
this is what my NSXMLParser methods are currently looking like
- (void)startTheParsingProcess:(NSData *)parserData
{
NSXMLParser *parser = [[NSXMLParser alloc] initWithData:parserData]; //parserData passed to NSXMLParser delegate which starts the parsing process
[parser setDelegate:self];
[parser parse]; // starts the event-driven parsing operation.
}
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict
{
if ([elementName isEqualToString:@"first"]) {
parsedFirstMutableDictionary = [[NSMutableDictionary alloc] initWithDictionary:attributeDict];
}
if ([elementName isEqualToString:@"second"]) {
parsedSecondMutableDictionary = [[NSMutableDictionary alloc] initWithDictionary:attributeDict];
}
if ([elementName isEqualToString:@"Car"]) {
self.parsedDataArrayOfDictionaries = [NSMutableArray arrayWithCapacity:8];
}
}
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
{
if ([elementName isEqualToString:@"first"]) {
[parsedDataArrayOfDictionaries addObject:parsedFirstMutableDictionary];
[parsedDataArrayOfDictionaries addObject:parsedSecondMutableDictionary];
}
}
//etc
一切正常但是如果有几个第一个和第二个节点,当我向所有节点添加断点时,所有内容都以正确的顺序访问,然后转到 didEndElement 方法跳转到第一个节点将 NSDictionaries 正确添加到数组然后它跳转备份以开始解析,从那时起,刚刚添加的 parsedDataArrayOfDictionaries 中的旧值将丢失..
对此的任何帮助将不胜感激。