iOS

XML 파싱을 쉽게 해주는 TBXML

by hooni posted Mar 18, 2014
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 댓글로 가기 인쇄
XML  파싱할때 직관적으로 코딩할 수 있는 TBXML을 소개합니다.
아래는 예제파일에 포함된  소스코드 일부분입니다.  대략 이런식으로 코딩이 가능합니다. 참고하세요. ^^
// instantiate an array to hold author objects
authors = [[NSMutableArray alloc] initWithCapacity:10];
 
// Load and parse the books.xml file
tbxml = [[TBXML tbxmlWithXMLFile:@"books.xml"] retain];
 
// Obtain root element
TBXMLElement * root = tbxml.rootXMLElement;
 
// if root element is valid
if (root) {
  // search for the first author element within the root element's children
  TBXMLElement * author = [TBXML childElementNamed:@"author" parentElement:root];
   
  // if an author element was found
  while (author != nil) {
     
    // instantiate an author object
    Author * anAuthor = [[Author alloc] init];
     
    // get the name attribute from the author element
    anAuthor.name = [TBXML valueOfAttributeNamed:@"name" forElement:author];
     
    // search the author's child elements for a book element
    TBXMLElement * book = [TBXML childElementNamed:@"book" parentElement:author];
     
    // if a book element was found
    while (book != nil) {
       
      // instantiate a book object
      Book * aBook = [[Book alloc] init];
       
      // extract the title attribute from the book element
      aBook.title = [TBXML valueOfAttributeNamed:@"title" forElement:book];
 
      // extract the title attribute from the book element
      NSString * price = [TBXML valueOfAttributeNamed:@"price" forElement:book];
       
      // if we found a price
      if (price != nil) {
        // obtain the price from the book element
        aBook.price = [NSNumber numberWithFloat:[price floatValue]];
      }
       
      // find the description child element of the book element
      TBXMLElement * desc = [TBXML childElementNamed:@"description" parentElement:book];
       
      // if we found a description
      if (desc != nil) {
        // obtain the text from the description element
        aBook.description = [TBXML textForElement:desc];
      }
       
      // add the book object to the author's books array and release the resource
      [anAuthor.books addObject:aBook];
      [aBook release];
       
      // find the next sibling element named "book"
      book = [TBXML nextSiblingNamed:@"book" searchFromElement:book];
    }
     
    // add our author object to the authors array and release the resource
    [authors addObject:anAuthor];
    [anAuthor release];
     
    // find the next sibling element named "author"
    author = [TBXML nextSiblingNamed:@"author" searchFromElement:author];
  }       
}
 
// release resources
[tbxml release];

소스다운로드는 첨부파일 또는 아래링크를 참고하세요.
http://www.tbxml.co.uk/TBXML/TBXML_Free.html