サーバーから返されたいくつかの xml データのメイン要素のサブ要素である 2 つの NSDictionary オブジェクトがあります。
xml は次のようになります。
<Car>
<first element1="1" element2="2">
<second/>
</first>
<first element1="1" element2="2">
<second/>
</first>
<first element1="1" element2="2">
<second/>
</first>
</Car>
keyvalues を含む first と second を独自の NSDictionary オブジェクトに保存しています。
問題は、複数の car 要素を持つことができるため、1 番目と 2 番目の NSDictionaries を含む car 要素の配列を保存する必要があることですが、これを行う方法がよくわかりません。
どんな助けでも大歓迎です。
完全な 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
すべて正常に動作しますが、最初と 2 番目のノードがいくつかある場合、それらすべてにポイントブレークを追加すると、すべてが正しい順序でアクセスされ、didEndElement メソッドに移動して最初のノードにジャンプし、配列に NSDictionaries を正しく追加してからジャンプします戻って解析を開始すると、その時点から、追加されたばかりの parsedDataArrayOfDictionaries の古い値が失われます。
これに関する助けがあれば、大歓迎です。