我已經從Java對象序列化到一個XML文件,我必須使用objective-c爲iOS應用程序反序列化。NSXMLParser與多個類
我第一次使用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>
...
然後我給類(從NSObject的衍生)的XML的某些部分,如包含的Sprites
和Sprite
陣列的Level
類依次包含數組Costumes
依次類推......
我的問題是XMLParser並不真正「知道」該值對應哪個類。我必須區分不同的類來設置相應的屬性。
例如,以下行工程爲Level
對象的所有屬性(的<Content.Project>
第一級但不<spriteList>
等): [self.level的setValue:self.currentElementValue forKey:的ElementName];
所以基本上我的問題是:是否有辦法在...
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName
namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
...解析器的方法的XML文件中的不同「級別」或「深度」之間的區別?
我確定必須有一個簡單的方法來實現這一點,但我還沒有找到一個谷歌。 在此先感謝。
這也是我的第一個想法,但由於XML的格式不規範而另一個團隊正在它仍然可以是任何的變化,所以我尋找一個通用的解決方案。 – Chris 2012-07-15 20:08:45
我最終通過使用DOM解析器... – Chris 2012-07-20 20:48:28