0

私は次のXMLファイルを持っています:

<?xml version="1.0"? encoding="UTF-8"?>
<api>
        <count count="55" />
        <spa>
            <opt>aa</opt>
            <opt>bb</opt>
            <opt>cc</opt>

        </spa>
</api>

次のコード行を使用するM:

NSString *path = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"space.xml"];

NSData *data = [[NSData alloc] initWithContentsOfFile:path];

NSXMLParser *xmlParser = [[NSXMLParser alloc] initWithData:data];

//Initialize the delegate.
XMLParser *theParser = [[XMLParser alloc] initXMLParser];

//Set delegate
[xmlParser setDelegate:theParser];

//Start parsing the XML file.
BOOL success = [xmlParser parse];

if(success)
    NSLog(@"No Errors");
else
    NSLog(@"Error Error Error!!!");

ただし、mはgdbで「エラーエラーエラー」として出力を取得します。私はObjectiveCを初めて使用し、エラーを乗り越えることができません。誰か助けてもらえますか?ありがとう。

4

2 に答える 2

1

//NSXMLParserを使用してみてください

NSXMLParser *parser = [[NSXMLParser alloc]initWithContentsOfURL:[NSURL URLWithString:@"YourURL"]];
[parser setDelegate:self];
[parser parse];

//以下はデータを取得するデリゲートです

-(void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict

  {    
            if([elementName isEqualToString:@"spa"]){
           got = YES; //got is a BOOL and here we have encountere start tag i.e <spa>
     }
  }

    -(void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
     {
          if(got)
          {
                 NSLog(@"the Data is = %@",string);
          }
     }

    -(void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
     {
         if([elementName isEqualToString:@"spa"])
        {
           got = NO; //Here we have encountered the end tag </spa>
        }

     }
于 2012-06-04T14:03:05.517 に答える
1

' path 'または' data 'がnilであるかどうかを確認しましたか?

また、「parse」が成功しなかった場合は、メソッド「parserError」を使用して、問題に関する詳細情報を保持するNSErrorオブジェクトを取得できます。NSXMLParserクラスリファレンスから:

parserError
解析エラーに関する情報を取得できるNSErrorオブジェクトを返します。

- (NSError *)parserError

考察
エラーの原因を特定するために、解析操作が異常終了した後にこのメソッドを呼び出すことができます。

可用性
iOS2.0以降で利用できます。

この後、NSError*オブジェクトでメソッド' localizedDescription 'を呼び出して、問題に関する詳細情報を取得できるようになります。

これがお役に立てば幸いです。

于 2012-06-04T14:10:09.127 に答える