我已经从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