让我们说这是我要解析的.xmi文件;
<?xml version="1.0" encoding="UTF-8"?>
<Albums>
<Album id="1">
<name>Images</name>
<link1>http://galeri.uludagsozluk.com/38/apple_36298.png</link1>
<link2>http://galeri.uludagsozluk.com/38/apple_36298.png</link2>
<link3>http://galeri.uludagsozluk.com/38/apple_36298.png</link3>
<link4>http://galeri.uludagsozluk.com/38/apple_36298.png</link4>
<link5>http://galeri.uludagsozluk.com/38/apple_36298.png</link5>
</Album>
</Albums>
如何创建循环以为link1 link2 link3创建可变字符串,依此类推。我不希望受到链接数量的限制。所以循环肯定是必需的。
这是我的nsxmlparser代码;
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString
*)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary
*)attributeDict{
currentElement = [elementName copy];
if ([elementName isEqualToString:@"Album"]) {
album = [[NSMutableDictionary alloc] init];
self.currentName = [[NSMutableString alloc] init];
self.currentURL = [[NSMutableString alloc] init];
}
}
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString
*)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{
if ([elementName isEqualToString:@"Album"]) {
[album setObject:self.currentName forKey:@"name"];
[album setObject:self.currentURL forKey:@"link1"];
[albums addObject:[album copy]];
}
}
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString
*)string{
if ([currentElement isEqualToString:@"name"]) {
[self.currentName appendString:string];
} else if ([currentElement isEqualToString:@"link1"]) {
[self.currentURL appendString:string];
} }
使用此解析器,我只能解析link1。但我应该为“link%@”创建一个循环,解析器应该自动解析我添加的所有链接。
或者你们建议一种更好的方法来解析某个元素下的多个链接?安排.xml文件的更好方法?我对新想法持开放态度。像:
<?xml version="1.0" encoding="UTF-8"?>
<Albums>
<Album id="1">
<name>Images</name>
<link id="1">http://galeri.uludagsozluk.com/38/apple_36298.png</link>
<link id="2">http://galeri.uludagsozluk.com/38/apple_36298.png</link>
<link id="3">http://galeri.uludagsozluk.com/38/apple_36298.png</link>
<link id="4">http://galeri.uludagsozluk.com/38/apple_36298.png</link>
<link id="5">http://galeri.uludagsozluk.com/38/apple_36298.png</link>
</Album>
</Albums>
或者,上面的xml可能吗?
提前完成。
答案 0 :(得分:0)
您需要创建一个仅运行5次的for循环。
或
包含<links />
元素中的link-N元素。
<?xml version="1.0" encoding="UTF-8"?>
<Albums>
<Album id="1">
<name>Images</name>
<links>
<link>http://galeri.uludagsozluk.com/38/apple_36298.png</link>
<link>http://galeri.uludagsozluk.com/38/apple_36298.png</link>
<link>http://galeri.uludagsozluk.com/38/apple_36298.png</link>
<link>http://galeri.uludagsozluk.com/38/apple_36298.png</link>
<link>http://galeri.uludagsozluk.com/38/apple_36298.png</link>
</links>
</Album>
</Albums>
答案 1 :(得分:0)
我找到的最佳解决方案是componentseparatedbystring方法。如果只将一个链接添加到一个元素中,解析器会将其解析为nsstring,您可以从nsstring创建nsarray。很容易,我们可以在任何我们想要的地方使用这个数组。