我是iOS编程的新手;现在我正在尝试解析本地XML文件。 它工作正常,并在NSLog中显示名称;但当我粘贴同样的东西时,只显示了一次。
任何人都可以指导我如何在日志中再次显示相同的字符串?
这是我第一次尝试解析时的本地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];
}
任何人都可以指导我如何一次又一次地展示我的结果?
答案 0 :(得分:3)
问题不在于您的解析代码,而在于您的XML输入。 XML文件必须具有单个顶级元素,例如:
<Authors>
<Author>
...
</Author>
<Author>
...
</Author>
<Author>
...
</Author>
</Authors>
在您的情况下,XML解析器会在第一个Author元素之后停止读取。