2011-12-13 62 views
1

我有以下結構的XML文件:如何使用Objective C解析這個XML文件?

<xmlDocument version="1"> 
<subject id="1"> 
<maths marks="65"/> 
<science marks="80"/> 
<tamil marks="90"/> 
<social marks="79"/> 
<English marks="70"/> 
</subject> 
</xmlDocument> 

如何解析和使用Objective C中得到這個數據?

回答

1
  1. 創建一個NSXMLParser的實例並將一個委託分配給解析器。
  2. 在您的委託類中,實現NSXMLParserDelegate協議的相關方法。
  3. 調用解析器的parse方法。
  4. 如果遇到問題,請詢問更具體的問題。
0

既然你沒有你的標籤內,你可以使用parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName attributes:(NSDictionary *)attributeDict方法上的委託任何文本。您可以將值存儲在字典或對象中。如果您有多個subject標籤,則可以使用parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName來更改解析器的上下文。官方文件應該給你更多關於哪些方法可用的細節。

你可以做這樣的事情(不完全實現):

/* 
* Incomplete implementation just to give some pointers 
*/ 
@implementation MyDelegate 
    -(void) init { 
     if((self = [super init])) { 
      _subjects = [NSMutableArray new]; 
     } 
    } 
    -(void) parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName attributes:(NSDictionary *)attributeDict { 
     if([elementName equalsIgnoreCase:@"subject"]) { 
      _context = [NSMutableDictionary new]; 
     } else { 
      [_context setObject:[attributeDict valueForKey:@"mark"] forKey:elementName]; 
     } 
    } 
    - (void) parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName { 
     [_subjects addObject:_context] 
     [_context release]; _context = nil; 
    } 
@end