-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 には、他のユーザーを含むオブジェクト //user が含まれています。助けてください!

4

2 に答える 2

1

これを解析するのは難しくありません。BOOL フラグを保持し、2 レベル深い場合は YES に設定します。「didEndElement」コールバックをヒットしたときに、YES に設定されている場合は、2 レベルの深さであり、NO に設定解除されていることを意味します。それ以外の場合は、最初のレベルにいることを意味します。

ネストされたユーザーの任意のレベルがある場合は、ユーザーの n 番目のレベルを示す int を使用するだけです...「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 に答える