0

XMLファイルコード:

  <Books>
  <Book id="1" isbn="123456">
  <name>Let Us C</name>
  <authors>
  <author>Yashwant Kanetkar</author>
  <author>ABC</author>
  </authors>
  <price>250.00</price>
  </Book>
  <Book id="2" isbn="345678">
  <name>Programing With C++</name>
  <authors>
  <author>Balaguruswamy</author>
  <author>XYZ</author>
  </authors>
  <price>400.00</price>
  </Book>
  <Book id="3" isbn="789012">
  <name>Professional iPhone and iPad Application Development</name>
  <authors>
  <author>Gene Backlin</author>
  <author>QWE</author>
  </authors>
  <price>550.00</price>
  </Book>
  <Book id="4" isbn="901234">
  <name>Beginning iOS 4 Application Development</name>
  <authors>
  <author>Wei-Meng Lee</author>
  <author>IOP</author>
  </authors>
  <price>500.00</price>
  </Book>
  </Books>

誰かplsはこれで私を助けることができますか?

私はこのコードを使用しています:

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName attributes:(NSDictionary *)attributeDict {
    if([elementName isEqualToString:@"Books"]) 
    {
        appDelegate.books = [[NSMutableArray alloc] init];
    }
    else if([elementName isEqualToString:@"Book"]) 
    {
        aBook = [[Book alloc] init];
        aBook.bookID = [[attributeDict objectForKey:@"id"] integerValue];
        aBook.isbn = [[attributeDict objectForKey:@"isbn"] integerValue];
        NSLog(@"Reading isbn value : %@", aBook.isbn);
        NSLog(@"Reading id value :%i", aBook.bookID);
    }
    NSLog(@"Processing Element: %@", elementName);
}
4

1 に答える 1

3

まず、bool変数を取得します。次に、次のコードを記述します。おそらくそれは私が数日前に関連する仕事をしたのを助けるでしょう。

最初の.hファイル

@interface EventsViewController : UIViewController <NSXMLParserDelegate>
{
    NSMutableArray *_idArray;
    NSMutableArray *_isbnArray;
    BOOL isBook;
}

次に、.mファイルにこれを書き込む必要があります。

//ViewDidLoad内

- (void)viewDidLoad
{
    [super viewDidLoad];
    _idArray = [[NSMutableArray alloc] init];
    _isbnArray = [[NSMutableArray alloc] init];
    
    NSString *xmlString = [[NSBundle mainBundle] pathForResource:@"today_in_history_short" ofType:@"xml"];
    NSURL * fileURL = [NSURL fileURLWithPath:xmlString];
    NSXMLParser * parser = [[NSXMLParser alloc] initWithContentsOfURL:fileURL];
    [parser setDelegate:self];
    [parser parse];
}

//xmlでパーサーデリゲートメソッド

プラグママーク-NSXMLParserデリゲートメソッド

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict{
    
    if ([elementName isEqualToString:@"Books"]) {
        isBook = YES;
    }
    else if ([elementName isEqualToString:@"Book"] && isBook){
        NSString *idString = [attributeDict objectForKey:@"id"];
        NSString *isbnString = [attributeDict objectForKey:@"isbn"];
        [_idArray addObject:idString];
        [_isbnArray addObject:isbnString];
        NSLog(@"Book id is: %@ and Book isbn is: %@",idString,isbnString);
    }
}

- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{
}

- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{
    
    if ([elementName isEqualToString:@"Books"]) {
        isBook=NO;
        NSLog(@"Id Array count is :%d",[_idArray count]);
    }
}

注:確認しました。動作しています。コードで使用できます。それでも動作しない場合は、プロジェクトに何か問題があります。別のプロジェクトを作成して確認できます。

于 2012-06-04T07:28:51.527 に答える