-1

我想解析一个像这样的xml:

<users>
  <user>
    <userName>mspeller</userName>
    <firstName>Mike</firstName>
    <lastName>Speller</lastName>
    <user>
      <userName>mspeller</userName>
      <firstName>Mike</firstName>
      <lastName>Speller</lastName>
    </user>
    <user>
      <userName>mspeller</userName>
      <firstName>Mike</firstName>
      <lastName>Speller</lastName>
    </user>
    ...
  </user>
  <user>
    <userName>mgdan</userName>
    <firstName>Mila</firstName>
    <lastName>Gdan</lastName>
  </user>
  ...
</users>

我们你看,这个xml包含对象//包含其他用户的用户,请帮助!

4

2 回答 2

1

解析这个应该不难。只需保留一个 BOOL 标志并在两层深度时将其设置为 YES。当你点击'didEndElement'回调时,如果它设置为YES,这意味着你有两层深度并将其取消设置为NO。否则,这意味着您处于第一级。

如果有任意级别的嵌套用户,那么只需有一个 int 来指示用户的第 n 级……每次点击“didStartElement”时,将其递增。在“didEndElement”中,递减它。此外,您可能需要一个堆栈类型的数据结构......

*编辑: *这是假设您使用事件驱动的解析器,如 NSXMLParser...

于 2012-05-17T09:36:02.713 回答
1

创建一个类:

@interface User : NSObject
@property (nonatomic,retain)NSString * firstName;
@property (nonatomic,retain)NSString *lastName;
@property (nonatomic,retain)User *secondaryUser;

每当 startElement 是 userName 时,只需在 User 下初始化辅助用户并设置您想要的属性。它对我来说很好。希望这对你有帮助。

于 2012-05-17T10:33:07.803 回答