NSXML Parsing 하기



#import <UIKit/UIKit.h>

@interface ViewController : UIViewController<NSXMLParserDelegate> {
    
    NSString *nowTagStr;
    NSString *txtBuffer;
}
@property (weak, nonatomic) IBOutlet UITextView *myTextView;

@end

// m -----------------------------
//
//  ViewController.m
//  XmlTest1
//
//  Created by sgi320 on 2014. 12. 27..
//  Copyright (c) 2014 sgi320. All rights reserved.
//

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController
@synthesize myTextView;

//???: 기동시, 텍스트뷰 초기화 파싱시작
- (void)viewDidLoad {
    [super viewDidLoad];

    // 텍스트 뷰를 초기화 시키고 편집불가로 설정
    myTextView.text = @"";
    
    myTextView.editable = NO;
    // URL 지정해서 XML서버를 작성한다.
    
//    NSURL *myURL = [NSURL URLWithString:
//                    @"http://www.ymori.com/itest/test.xml"];
    
    NSURL *myURL = [NSURL URLWithString:@"http://www.ymori.com/itest/test.xml"];
    
    NSXMLParser *myParser = [[NSXMLParser alloc] initWithContentsOfURL:myURL];
    myParser.delegate = self;
    // 해석을 개시한다.
    
    [myParser parse];
}
//???: 파싱 시작시, 태그 초기화
- (void)parserDidStartDocument:(NSXMLParser *)parser {
    
    // 해석중인 태그를 초기화한다.
    nowTagStr = @"";
    
}
//???: 시작태그발견시, 텍스트뷰에 버퍼 문자열 추가
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName

  namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict {
    // 개시 태그가 "sweets"이면
    if([elementName isEqualToString:@"sweets"]) {
        
        // 해석중인 태그로 설정
        nowTagStr = [NSString stringWithString:elementName];
        // 텍스트 버퍼를 초기화시킨다.
        txtBuffer = @"";

        // 텍스트 뷰에 태그 명과 price속성을 추가한다.
        myTextView.text = [myTextView.text stringByAppendingFormat:
                           @"태그 =[%@]\n 속성 price=[%@]",
                           elementName, [attributeDict objectForKey:@"price"]];
    }
}
//???: 파서가 문자열 발견시, 버퍼에 문자열 추가
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string {
    // 해석중인 태그가 "sweets"이면
    
    if ([nowTagStr isEqualToString:@"sweets"]) {
        // 텍스트 버퍼에 문자열을 추가한다.
        
        txtBuffer = [txtBuffer stringByAppendingString:string];
        
    }
}
//???: 종료태그발견시, 텍스트뷰에 버퍼 문자열 추가
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName {
    
    // 종료태그가 "sweets"이면
    if ([elementName isEqualToString:@"sweets"])
    {
        // 텍스트 뷰에 텍스트 버퍼의 문자열을 추가한다.
        myTextView.text = [myTextView.text stringByAppendingFormat:
                           @"\n 요소=[%@]\n\n",txtBuffer];
        
    }
}
//???: 뷰언로드시 텍스트뷰 지우기
- (void)viewDidUnload {
    
    [self setMyTextView:nil];
    [super viewDidUnload];
    // Release any retained subviews of the main view. // e.g. self.myOutlet = nil;
    
}
//
- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end


댓글

이 블로그의 인기 게시물

파이썬으로 Homomorphic Filtering 하기

파이썬으로 2D FFT/iFFT 하기: numpy 버전