[ios] XML 파서 이용하기
공공 데이터 API 중에는 XML로 제공되는 데이터들이 많습니다.
ios에서 기본으로 제공하고, 사용법은 간단합니다.
1. URL 객체를 생성하고, url를 입력합니다.
test URL는 동물보호관리시스템 유기동물 조회 서비스를 이용하겠습니다.
https://www.data.go.kr/dataset/15001096/openapi.do
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
댓글
댓글 쓰기