object-c を使用して iOS アプリ用に逆シリアル化する必要がある XML ファイルに Java からオブジェクトをシリアル化しました。
私は初めて NSXMLParser を使用しており、objective-c に特定のオブジェクト構造を持っています。
XML ファイルのサンプルを次に示します。
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<Content.Project>
<versionName>0.5.241</versionName>
<spriteList>
<Content.Sprite>
<costumeDataList>
<Common.CostumeData>
<costumeFileName>CCE87ECA859D4448BC47A837CF024464_background</costumeFileName>
<costumeName>background</costumeName>
</Common.CostumeData>
</costumeDataList>
<soundList/>
<scriptList>
<Content.StartScript>
<brickList>
<Bricks.SetCostumeBrick>
<costumeData reference="../../../../../costumeDataList/Common.CostumeData"/>
<sprite reference="../../../../.."/>
</Bricks.SetCostumeBrick>
</brickList>
<sprite reference="../../.."/>
<name>stageStartScript</name>
</Content.StartScript>
</scriptList>
<name>Background</name>
</Content.Sprite>
...
次に、XML の特定のセクションに (NSObject から派生した) クラスを指定Level
しSprites
ましSprite
たCostumes
。
私の問題は、値がどのクラスに対応するかを XMLParser が実際には「認識」していないことです。対応するプロパティを設定するには、異なるクラス間で異なる必要があります。
たとえば、次の行は、Level
オブジェクトのすべてのプロパティ (最初のレベル<Content.Project>
以外<spriteList>
など) に対して機能します。
したがって、基本的に私の質問は次のとおりです。XMLファイルのさまざまな「レベル」または「深さ」を区別する方法はありますか...
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName
namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
...パーサーのメソッド?
これを達成する簡単な方法があるに違いないと確信していますが、グーグルで見つけられませんでした。前もって感謝します。