2013-12-14 60 views
1

我是iOS編程新手,現在我正試圖解析一個本地XML文件。 它工作正常,並在NSLog中顯示名稱;但是當我粘貼同樣的東西時只顯示一次。如何正確解析本地XML?

任何人都可以指導我如何再次在日誌中顯示相同的字符串?

這是我的本地XML時,我第一次嘗試解析,它顯示的結果

<Author> 
    <name>Collin Ruffenach</name> 
    <age>23</age> 
    <gender>male</gender> 
    <Books> 
      <Book> 
        <title>Objective C for the iPhone</title> 
        <year>2010</year> 
        <level>intermediate</level> 
       </Book> 
    </Books> 
    </Author> 

我第二次嘗試同樣的XML文件,但粘貼的東西幾次一樣:

<Author> 
<name>Collin Ruffenach</name> 
<age>23</age> 
<gender>male</gender> 
<Books> 
     <Book> 
       <title>Objective C for the iPhone</title> 
       <year>2010</year> 
       <level>intermediate</level> 
      </Book> 
</Books> 
    </Author> 
    <Author> 
<name>Collin Ruffenach</name> 
<age>23</age> 
<gender>male</gender> 
<Books> 
     <Book> 
       <title>Objective C for the iPhone</title> 
       <year>2010</year> 
       <level>intermediate</level> 
      </Book> 
</Books> 
    </Author> 
    <Author> 
<name>Collin Ruffenach</name> 
<age>23</age> 
<gender>male</gender> 
<Books> 
     <Book> 
       <title>Objective C for the iPhone</title> 
       <year>2010</year> 
       <level>intermediate</level> 
      </Book> 
</Books> 
    </Author> 

但我無法得到所需的結果。

這是我的.m代碼

-init { 
    if(self == [super init]) { 
    parser = [[NSXMLParser alloc] 
       initWithContentsOfURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] 
                  pathForResource:@"sample1"  ofType: @"xml"]]]; 
    [parser setDelegate:self]; 
    [parser parse]; 
    }  
return self; 
} 

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

     NSLog(@"Started Element : %@", elementName); 
       element = [NSMutableString string]; 

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

     NSLog(@"Element End named: %@ with avalue of: %@", elementName, element); 

     } 

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

    if(element == nil) 
    { 

     element = [[NSMutableString alloc] init]; 
    } 

    [element appendString:string]; 

    } 

任何人都可以指導我怎麼會一次又一次地表明我的結果?

回答

3

問題不在於解析代碼,而在於使用XML輸入。 一個XML文件必須有一個頂級元素,例如:

<Authors> 
    <Author> 
    ... 
    </Author> 
    <Author> 
    ... 
    </Author> 
    <Author> 
    ... 
    </Author> 
</Authors> 

在你的情況,XML解析器將停止第一作者元素後閱讀。