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:
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


댓글
댓글 쓰기