로컬 리소스, 혹은 웹의 특정공간에 xml로 리스트를 작성하고 그것을 읽어와 파싱할때 touchXML이 유용하다.
단 쉽게 검색해서 나오지 않는 팁을 발견한거 같아서 .. (사실은 다들 알고 있을지 모르겠지만...) 기록한다.
touchXML을 사용하는 법은 아래를 참고했다.
2. parsing XML element attributes with touchXML <-- touchXML의 공식 제작자인듯 하다..
위의 구글뉴스데이터파싱의 예제에서는 touchXML과 ASI-HTTP_REQUEST를 사용했는데..
이상하게 내가 개조해서 써볼랬더니 알수없는 gcc4.2 exit code 1오류가 나서 뻗어버리는 바람에
아래의 영문 블로그글을 보고 머리를 굴리다가 발견했다.
저 예제에서는 게임에서 사용할 아이템이나 뭐 이런걸 xml을 이용한다고 하면서 본인의 팁을 알려주는데
XML파싱을 함과 동시에 무려 KVC를 이용해 연결해버리는 꽁수가 나와있다.
저걸 보면서 쾌재를 느낀게.. 저 팁을 이용하면 navigationBar를 구현할때 쉽게 연결해버리면 되지 않을까 하는 것이었다.
근데 저 예제에서는 xml이 로컬에 저장되어있는 형태이다.
나는 웹에서 xml을 읽어 정보를 불러와야 하기 떄문에 고민고민하다가.. dataWithContentsOfFile이 아닌 dataWithContentsOFURL이 있다는걸 발견했다.
첨엔 저기에 그냥 NSString값으로 주소를 넘겼는데 오류가 발생한다.
열심히 구글링을 해보니 NSURL이라는 데이타 형식이 있다.
뭐 각설하고... 예제중에
04 |
// using local resource file |
05 |
NSString *XMLPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@ "piglets.xml" ]; |
06 |
NSData *XMLData = [NSData dataWithContentsOfFile:XMLPath]; |
07 |
CXMLDocument *doc = [[[CXMLDocument alloc] initWithData:XMLData options:0 error:nil] autorelease]; |
요런 부분이 있다.
저기서 5번라인을 요로코롬 바꿔주면 된다.
//using resource file
NSURL *xmlURL = [NSURL URLWithString:@"xml address"]; //실제 xml이 위치할 주소를 적으면 된다.
NSData *XMLData = [NSData dataWithContentsOfURL:xmlURL];
CXMLDocument *doc = [[[CXMLDocument alloc] initWithData:XMLData options:0 error:nil] autorelease];
콘솔창을 확인하니 잘 파싱된다. 굿!
'프로그래밍 > iOS' 카테고리의 다른 글
여러가지 Util (0) | 2011.03.29 |
---|---|
xcode 라이브러리 모음 (0) | 2011.03.24 |
앞뒤 공백문자 제거(Trim white space) (0) | 2011.03.24 |
iPhone libxml2 사용 하는 법 (0) | 2011.03.24 |
iOS에서의 XML 파싱 - NSXMLParser (0) | 2011.03.21 |