0

Post Response から受け取った文字列を解析したいだけです。NSXMLParse のような lib/classes があり、Apple がいくつかの例を提供していますが、私が望むものではないことを知っています。または、そのコードを理解する準備ができていません。

私はこれを受け取ります:

<object>
<id>1</id>
<alias>juan</alias>
<email>jps@sol.pro</email>
</object>
<object>
<id>2</id>
<alias>juana</alias>
<email>jpsa@sol.pro</email>
</object>

次に、次のようなデータを解析して取得する必要があります。

NSString *xmlThing = [response];
for xmlThing in-all <object>
{
    uint id = <id>1</id>
    NSString *alias = <alias>juan</alias>
    NSString *email = <email>email@email.com</email>
}

なぜこのような?あらゆる種類のhtml、xmlなどのファイルを実行して解析する最も簡単な方法だと思うからです。

あらゆる種類の助けに感謝します。

4

3 に答える 3

6

XMLReader クラスを使用すると、XML ファイルを簡単に解析できます。詳細については、https: //appengineer.in/2013/08/03/xml-parsing-using-xml-reader-in-objective-c/ をご覧ください。

于 2014-09-06T05:44:21.000 に答える
4

NSXMLParserとそのデリゲート メソッドを使用できます。

例: *.h ファイルに NSXMLDelegate を追加します。

@interface YourClass: NSObject <NSXMLParserDelegate>

*.m ファイル:

    @interface YourClass()
    @property NSMutableString *currentXMLValue;
    @property NSMutableArray *objects;
    @end

    @implementation YourClass{
    -(void) processXML {
    NSXMLParser *xmlParser = [[NSXMLParser alloc] initWithData: data];
    self.objects = [[NSMutableArray alloc] init];
    [xmlParser setDelegate: self];
    [xmlParser parse];
    }

    -(void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
    {
        //each time part of string is found append it to current string
        [self.currentXMLValue appendString:string];
    }

//here you can check when <object> appears in xml and create this object
-(void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *) namespaceURI qualifiedName:(NSString *)qName
   attributes: (NSDictionary *)attributeDict
{
    //each time new element is found reset string
    self.currentXMLValue = [[NSMutableString alloc] init];
    if( [elementName isEqualToString:@"object"])
    {
        self.obj= [[YourObject alloc] init];
    }
}
//this is triggered when there is closing tag </object>, </alias> and so on. Use it to set object's properties. If you get </object> - add object to array.
    -(void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
    {

        if ([elementName isEqualToString:@"id"]) {
           obj.id = [self.currentXMLValue intValue];
        }
        else if ([elementName isEqualToString:@"alias"]) {
           obj.alias = self.currentXMLValue;
        }
        else if ([elementName isEqualToString:@"object"]) {
        if (self.objects) {
            [self.object addObject:obj];
        }
        }
    //and so on
    } 
    }
于 2013-02-22T15:09:12.610 に答える
0

上記の答えは完璧に思えますが、大量のデータがあり、処理速度が速い場合は、おそらくTBXMLを使用できる他のパーサーを使用することをお勧めします.xmlの比較はこちら

于 2013-02-22T18:02:46.323 に答える