[ios] XML 파서 이용하기

공공 데이터 API 중에는 XML로 제공되는 데이터들이 많습니다.
ios에서 기본으로 제공하고, 사용법은 간단합니다.

1. URL 객체를 생성하고, url를 입력합니다.
test URL는 동물보호관리시스템 유기동물 조회 서비스를 이용하겠습니다.
https://www.data.go.kr/dataset/15001096/openapi.do



NSURL *url = [[NSURL alloc] initWithString:@"http://openapi.animal.go.kr/openapi/service/rest/abandonmentPublicSrvc/abandonmentPublic?ServiceKey={{ServiceKey}}&bgnde=20140601&endde=20171210&upkind=417000&kind=000018&pageNo=1&numOfRows=10"];

2. URL 객체를 사용하여 XML 파서를 생성하고 델리케이트를 연결해줍니다.
@interface에 NSXMLParserDelegate를 등록합니다.


   NSXMLParser *xmlParser = [[NSXMLParser alloc] initWithContentsOfURL:url];
    xmlParser.delegate =self;


3. 파싱을 실행합니다.

   [xmlParser parse];

4. NSXMLParserDelegate 핸드러는 다음과 같습니다

- (void)parserDidStartDocument:(NSXMLParser *)parser;
파싱을 시작했을때 호출되는 함수 입니다.

- (void)parserDidEndDocument:(NSXMLParser *)parser;
파싱을 종료했을떄 호출되는 함수 입니다.


---------------------------------------------------------------------------

이외에도  git에서 XmlReader를 다운받아 사용하면 더 편하게 사용할 수 있습니다.
https://github.com/rahulnadella/XmlReader/tree/master/XmlReader

XMLReader.h는 아래와 같이 구성되어있으며

@interface XMLReader : NSObject <NSXMLParserDelegate>
{
    NSMutableArray *dictionaryStack;
    NSMutableString *textInProgress;
    NSError *errorPointer;
}

+ (NSDictionary *)dictionaryForXMLData:(NSData *)data error:(NSError **)errorPointer;
+ (NSDictionary *)dictionaryForXMLString:(NSString *)string error:(NSError **)errorPointer;


url객체로 호출한 응답 객체를 아래와 같이 받아서 파싱할수 있습니다.

NSDictionary *dic =[XMLReader dictionaryForXMLData:data error:nil];
                                          
NSDictionary *responseDic =[[dic objectForKey:@"data"] objectForKey:@"response"];
                                          


@end

댓글

주간 인기글

[정보] 인스타그램은 당신의 소리를 '듣고' 있을 수도 있습니다

[Angular] 모델, 값이 바뀌었는데 화면 template 이 업데이트 되지 않을 때 조치 팁

AWS Lambda - API Gateway로 S3 파일 업로드 API 만들기 #3 - API Gateway - Lambda 연결 및 테스트

[AWS] Lambda + API GateWay를 이용해 간단한 RESTful API 만들기 #1

[AWS] Lambda + API GateWay를 이용해 간단한 RESTful API 만들기 #2