NSXMLParser具有多个类

时间:2012-07-15 18:19:17

标签: iphone objective-c nsxmlparser nsobject

我有一个从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数组的Sprites,而Sprite类依次包含数组Costumes等等......

我的问题是XMLParser并不真正知道&#39;该值对应于哪个类。我必须在不同的类之间设置相应的属性。

例如,以下行适用于Level对象的所有属性(<Content.Project>的第一级但不包括<spriteList>等等):     [self.level setValue:self.currentElementValue forKey:elementName];

基本上我的问题是:有没有办法区分不同的等级&#39;或者&#39;深度&#39;在...

中的XML文件中
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName
  namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName 

...解析器的方法?

我相信必须有一个简单的方法来实现这一点,但我还没有在谷歌上找到一个。 提前谢谢。

1 个答案:

答案 0 :(得分:0)

制作深度计数器。在didStartElement中增加它,并在didEndElement中减少它: - )