2013-12-14 53 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解析器将停止第一作者元素后阅读。