0

XMLファイルを解析した後、出力は次の形式で辞書に表示されます今、私はそれを辞書の配列に変換したいです
誰でも適切な解決策を提案できますか

Printing description of rootDictionary:
<CFBasicHash 0x8866000 [0x1078b38]>{type = mutable dict, count = 1,
entries =>
    0 : <CFString 0x8869490 [0x1078b38]>{contents = "Data"} = <CFBasicHash 0x88695c0 [0x1078b38]>{type = mutable dict, count = 1,
entries =>
    0 : <CFString 0x8869610 [0x1078b38]>{contents = "row"} = (
        {
        Address =         {
            text = "Skt. Clemens Torv 2-6";
        };
        City =         {
            text = "Aarhus C";
        };
        Country =         {
            text = Danmark;
        };
        Description =         {
            text = Ottopiste;
        };
        Lat =         {
            text = "56.156818";
        };
        Lon =         {
            text = "10.2092532";
        };
        Name =         {
            text = Ottopisteet;
        };
        Type =         {
            text = 1;
        };
        Zip =         {
            text = 8000;
        };
    },
        {
        Address =         {
            text = "Kauppatie 66";
        };
        City =         {
            text = Kauhava;
        };
        Country =         {
            text = Finland;
        };
        Description =         {
            text = "(null)";
        };
        Lat =         {
            text = "63.1001586";
        };
        Lon =         {
            text = "23.0463634";
        };
        Name =         {
            text = I m Here;
        };
        Type =         {
            text = 2;
        };
        Zip =         {
            text = 62200;
        };
    }
)
}
}

出力辞書は上記の形式になりました。辞書の配列に変換したいと思います。

Actual format of XML for reference:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<Data>
<row>
  <Lat>56.156818</Lat>
  <Lon>10.2092532</Lon>
  <City>Aarhus C</City>
  <Address>Skt. Clemens Torv 2-6</Address>
  <Zip>8000</Zip>
  <Country>Danmark</Country>
  <Name>Ottopisteet</Name>
  <Description>Ottopiste</Description>
  <Type>1</Type>
</row>
<row>
  <Lat>63.1001586</Lat>
  <Lon>23.0463634</Lon>
  <City>Kauhava</City>
  <Address>Kauppatie 66</Address>
  <Zip>62200</Zip>
  <Country>Finland</Country>
  <Name>I am Here</Name>
  <Description>(null)</Description>
  <Type>2</Type>
</row>
</Data>
4

2 に答える 2

1

これを行う:

 NSMutableArray *arrData = [[parsedValueDictionary objectForKey:@"Data"]  objectForKey:@"row"];
于 2012-08-28T09:05:32.797 に答える
0

行の辞書を反復処理して、各オブジェクトを配列に追加するだけです。

NSMutableArray *arrayOfDictionaries = [[NSMutableArray alloc] init];
NSDictionary *rows = [rootDictionary objectForKey:@"Data"];

[rows enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop){
  [arrayOfDictionaries addObject:obj];
}];

更新:「データ」ディクショナリには「行」エントリだけがあると想定しています。それ以外の場合は、si のキーが前に「行」であるかどうかをチェックする必要があります。

于 2012-08-28T09:02:15.423 に答える