0

ネストされた要素がxml内に表示されるときにTouchXMLを使用するにはどうすればよいですか?辞書キー@"images"のNSArray内に画像名をネストする必要がありますが、コードに問題があります:(。XMLの構造は次のとおりです。

<itemList>
  <item>
    <name>SomeName</name>
    <description>Some description</description>
    <images>
        <image>image1.png</image>
        <image>image5.png</image>
    </images>
  </item>
  <item>
    <name>SomeName</name>
    <description>Some description</description>
    <images>
        <image>image1.png</image>
        <image>image5.png</image>
    </images>
  </item>
</itemList>

解析コードは次のとおりです。

resultNodes = [itemListParser nodesForXPath:@"//items" error:nil];

NSMutableDictionary *itemDic = [[NSMutableDictionary alloc] init];
itemList = [[[NSMutableArray alloc] init] autorelease];

NSMutableArray *images = [[NSMutableArray alloc] init];

// Loop through the resultNodes to access each items actual data
for (CXMLElement *resultElement in resultNodes) {

    for(int i = 0; i < [resultElement childCount]; i++) {

        if ([[[resultElement childAtIndex:i] name] isEqualToString:  @"images"]){

            [images removeAllObjects];

            for(int j = 0; j < [[resultElement childAtIndex:i] childCount]; j++) {

                [images addObject:[[resultElement childAtIndex:j] stringValue]];
            }

            [itemDic setObject:images forKey:[[resultElement childAtIndex:i] name]];

        } else {

            [itemDic setObject:[[resultElement childAtIndex:i] stringValue] forKey:[[resultElement childAtIndex:i] name]];
        }

    }
    [itemList addObject:[[itemDic copy] autorelease]]; 
}
[itemDic release];
[images release];
4

2 に答える 2

1

ノードを手動で繰り返すべきではありません。XPathを使用することをお勧めします。TouchXMLxpathAPIを見てください。

于 2011-10-23T15:44:03.977 に答える
0

resultNodes = [itemListParser nodesForXPath:@ "// item" error:nil];

アイテムではありません

于 2012-12-26T11:45:27.963 に答える