2012-12-22 106 views
-2

可能重複:
Xml parsing in iOS tutorial如何從文件中做XML解析

我在我的Xcode項目XML文件,我想分析中的UITableView這個XML文件並顯示數據。由於我對xml解析很陌生,因此我也很難做到這一點。如何解析下面的XML?

我的XML文件是:

<application> 
   <app_data> 
       <wayHome> 
           <data> 
               <title>159 Darby St Bus Stop</title> 
               <category>BUS</category> 
               <lat>-32.9320366</lat> 
               <long>151.7712731</long> 
               <image>159 Darby St Bus Stop.png</image> 
           </data> 
           <data> 
               <title>Beaumont St and Denison St Taxi Rank</title> 
               <category>TRAIN</category> 
               <lat>-32.9320366</lat> 
               <long>151.7712731</long> 
               <image>Beaumont St and Denison St Taxi Rank.png</image> 
           </data> 
           <data> 
               <title>Beaumont St Bus Shop next to ANZ</title> 
               <category>BUS</category> 
               <lat>-32.9227304</lat> 
               <long>151.7472369</long> 
               <image>Beaumont St Bus Shop next to ANZ.png</image> 
           </data> 
     </wayHome> 
    </app_data> 
</application> 
+0

的問題是什麼ü要分析是什麼?你想選擇哪個標籤?請至少框架問題.... – IronManGill

+0

謝謝你的建議。我想解析標題,類別,經緯度,圖像。 – vijay

回答

3

使用NSXMLParserDelegate方法來解析文件。

In yourInterface.h file include NSXMLParserDelegate 

@implementation yourInterface.m file: use below code 

NSURL* xmlFile = [NSURL fileURLWithPath:[[NSBundle mainBundle] 
              pathForResource:@"yourXMLfile" 
              ofType:@"xml"]]; 

NSXMLParser *xmlParser = [[NSXMLParser alloc] initWithContentsOfURL:xmlFile]; 

//Initialize the delegate. 
XMLParser *parser = [[XMLParser alloc] initXMLParser]; 

//Set delegate 
[xmlParser setDelegate:parser]; 

//Start parsing the XML file. 
BOOL success = [xmlParser parse]; 

if(success) 
NSLog(@"No Errors"); 
else 
NSLog(@"Error Error Error!!!"); 

使用委託方法來解析文件。 我假設你需要解析「數據」標籤。 在這裏,你可以檢查ElementName是「數據」還是不是。類似於「數據」的內容。在這裏您可以維護數組元素或字典。

所以你的工作是委託方法做:

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict; 

- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string; 

- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName;