'iPhoneXml'에 해당되는 글 1건

  1. 2010.08.29 APXML - iPhone
2010.08.29 22:42

APXML 이용해 Xml Parsing

1. iPhone Project APXML Source 추가

2. Xml Parsing 곳에서 APXML 라이브러리를 사용하기 위한 해더 추가

3. xml NSString 객체에 할당.

4. APDocument 객체 생성. (1. 에서 할당 NSString 사용)

5. XML 구문에 맞게 APElement 조사하며 파싱

- -

 

너무 쉽죠? :)

순서대로 코드를 리뷰하시면, 충분 하실 같네요 :) 다음 코드를 참고 하세요~

1. iPhone Project APXML Source 추가

  APXML 다운 하신 , iPhone Project 소스를 통째로 추가 주시면 됩니다.

 

2. Xml Parsing 곳에서 APXML 라이브러리를 사용하기 위한 header 추가

  #include "APXML.h" 코드에 추가 하시면 됩니다.

  (APXML.h 에서는 APDocument.h , APElement.h, APAttribute.h 해더가 추가 있거든요)

 

3. xml NSString 객체에 할당.

 보통 웹에서 다운하시니, 코드를 웹에서 다운 받는 형태로 작성 볼께요.

NSString* xmlStr = [NSString stringWithContentsOfURL:[NSURL URLWithString:xmlUrl]

encoding:NSUTF8StringEncoding error:nil];

  xmlUrl 입력하시면 되겠네요.

 

4. APDocument 객체 생성. (3. 에서 할당 NSString 사용)

APDocument* doc = [APDocument documentWithXMLString:xmlStr];

 APDocument 3번에서 할당 NSString 객체만 파라미터로 넘겨주시면 됩니다.

 

5. XML 구문에 맞게 APElement 조사하며 파싱

  - APElement 에서는 rootElement 라는 프로퍼티가 있어요. XML 문서의 Root 가져오게 됩니다.  반환 형식은 APElement 이고, 하위 엘리먼트들도 모두 포함하고 있습니다.   Root 베이스로, 하위 엘리먼트 요소를 XML 구문에 맞게 파싱하시면 되는 것이죠 :)

APElement* rootElement = [doc rootElement];

 

  - 또한, APElement 하위 엘리먼트 요소들을 childElements라는 프로퍼티를 통해 배열로 가지고 있습니다. 중요한 점은, 배열의 요소 각각 또한 APElement 라는 점입니다. 그래서, depth 아무리 깊더라도 파싱이 난해하지 않고 편하다는 것이죠 :)

NSArray* childElements = [rootElement childElements];

for(APElement* child in childElements) {

NSArray* memberElements = [child childElements];

MEMBER* obj = [[MEMBER alloc] init];

for(APElement* member in memberElements) {

// obj 객체 프로퍼티 할당

}

[members addObject:obj];

[obj release];

}

 

  - 마지막으로, 코드에서 주석처리 obj 객체 프로퍼티 할당 부분에 대해서 덧하자면.. (사실 이게 핵심이겠네요) Element 값을 가져오는 방식 다음과 같습니다.

// 엘리먼트명을 가져옵니다.

// ) <MEMBER id="1"> 에서 : MEMBER

[child name]

 

// 엘리먼트 Attribute 값을 가져옵니다.

// ) <MEMBER id="1"> 에서 : 1

[child valueForAttributeNamed:@"id"]

 

// 엘리먼트의 값을 가져옵니다

// ) <PHONE>010-0505-7575</PHONE> 에서 : 010-0505-7575

[child value]

 

정말 쉽죠? 또한, XDocument XElement 와도 매우 흡사합니다

XDocument - APDocument, 

XDocument.Root - [APDocument rootElement],

XElement - APElement

XElement.Elements - [APElement childElements]




 

http://mingu.kr/48 에서 퍼왔습니다 ㅎㅎ 민구님 좋은 자료 감사합니다 ㅎㅎ

신고
Posted by 우엉 여왕님!! ghostkyow

티스토리 툴바