我有一个从 Java 到 XML 文件的对象序列化,我必须使用 Objective-c 为 iOS 应用程序反序列化。
我第一次使用 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
包含一个数组的a,Sprites
而Sprite
该类又包含一个数组,Costumes
依此类推......
我的问题是 XMLParser 并不真正“知道”该值对应于哪个类。我必须区分不同的类来设置相应的属性。
例如,以下行适用于Level
对象的所有属性(第一级<Content.Project>
但不是<spriteList>
等等): [self.level setValue:self.currentElementValue forKey:elementName];
所以基本上我的问题是:有没有办法区分 XML 文件中不同的“级别”或“深度”...
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName
namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
...解析器的方法?
我确信必须有一种简单的方法来实现这一点,但我在谷歌上没有找到。提前致谢。