0

次のようなxmlをシリアライズしようとしています:

<Rows>
<RowOne SKATERID="706" MANUFACTURER="A-DZG" ISFACT="F" ISSKATE="F">True</RowOne>
<RowTwo SKATERID="318" MANUFACTURER="A-FGW" ISFACT="F" ISSKATE="T">True</RowTwo>
<RowThree SKATERID="458" MANUFACTURER="A-OPJ" ISFACT="F" ISSKATE="T">False</RowThree>
<RowFour SKATERID="178" MANUFACTURER="A-JSL" ISFACT="F" ISSKATE="T">True</RowFour>
</Rows>

しかし、私の質問は、属性を含めてそれを行う最良の方法は何でしょうか. これまでのところ、パーサーが機能しており、ノードに属性があることを検出すると、それらをローカルの nsmutabledictionay に送信しています。しかし、私の質問は、属性の辞書とノードの値をどのようにマッピングするかです。たとえば、RowOne では値は true ですが、次の属性 SKATERID="706" MANUFACTURER="A-DZG" ISFACT="F" ISSKATE="F" があります。

-(void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName 名前空間URI:(NSString *)namespaceURI 修飾名:(NSString *)qName 属性:(NSDictionary *)attributeDict{

私はこのようなコードを持っています:

if ([attributeDict count] != 0) {
    self.myDict = [[NSDictionary alloc] initWithDictionary:attributeDict];
}

in -(void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{

ノードの値で辞書をシリアル化する最良の方法は何かを理解したい

私は本当にあなたの助けに感謝します

4

2 に答える 2

0

編集:質問を読み直した後、「シリアル化」とはどういう意味ですか? 以下の解決策は、あなたの答えが保留されているため、あなたが望むものではないかもしれません.

XML 属性が静的である場合は、次のように動作するカスタム クラス myRowClass を作成することをお勧めします...

myRow.SkaterID //NSString
myRow.Manufacturer //NSString
myRow.IsFact //BOOL
myRow.IsSkate //BOOL

そのカスタム クラスを使用すると、各 myRow オブジェクトを次のように NSMutableDictionary にプッシュできます...

[myDict setObject:myRow forKey:@"RowOne"]
myRow = nil;
myRowClass *myRow = [[myRowClass alloc]init];
<...Iterate through next XML Node...>
[myDict setObject:myRow forKey:@"RowTwo"]

次に、データにアクセスする必要がある場合は、次のように取得できます...

NSString *myCurrentSkaterID = [[myDict objectForKey:@"RowTwo"].SkaterID]

また

myRowClass *myCurrentRow = [[myRowClass alloc]init];
myCurrentRow = [myDict objectForKey:@"RowTwo"];
NSString *myCurrentSkaterID = myCurrentRow.SkaterID;
于 2013-06-25T18:12:37.587 に答える
0

これは私が探していたものですhttp://troybrant.net/blog/2010/09/simple-xml-to-nsdictionary-converter/

于 2013-06-25T23:10:41.103 に答える