GdataxmlNode Objective-C ライブラリを使用して、巨大な xml ドキュメント (3d モデルを記述) を解析しようとしています。
これは、私をブロックする XML のサンプルです。
<library_effects>
<effect name="Love_Love-fx" id="Love_Love-fx">
<profile_COMMON>
<newparam sid="sexy-surface">
<surface type="2D">
<init_from>sexy</init_from>
<format>A8R8G8B8</format>
</surface>
</newparam>
....
</profile_COMMON>
</effect>
....
</library_effects>
私の目的:
エフェクト名を取得 (*Love_Love-fx*) : 完璧に動作します
init_from の内容を取得する ( sexy ) : まったく機能しません
これが私がそれを解析する方法です:
xmlGetData = [xmlDoc.rootElement elementsForName:@"library_effects"];
//Effects infos
int eff_c;
NSMutableArray *eff_ids = [[NSMutableArray alloc] init]; //effect names
NSMutableArray *eff_src = [[NSMutableArray alloc] init]; //efects sources
for (GDataXMLElement *e in xmlGetData)
{
eff_c = [[e elementsForName:@"effect"]count];
NSArray *eff_node = [e elementsForName:@"effect"];
for (int i = 0; i < eff_c; i++)
{
//get the effect name (id & name are the same)
[eff_ids addObject:[[eff_node objectAtIndex:i]attributeForName:@"id"]];
//get the content of init_from
[eff_src addObject:[[eff_node objectAtIndex:i]elementForName:@"init_from"]];
}
}
私の問題:最後の行([eff_src addObject.........
)にSIGABRTがあるため、「init_from」のコンテンツを取得できません
( [[eff_node objectAtIndex:i]elementForName:@"init_from"]]
Nil を返すため。?)
誰か助けてくれませんか?(明確で完全なドキュメントはありますか?その一部を説明するブログ投稿しか見ませんでした)
嫌な解決策:使用[[[[[[eff_node objectAtIndex:i]childAtIndex:0]childAtIndex:0]childAtIndex:0]childAtIndex:0]stringValue];