当我从 URL 检索 XML 文件时,我可以解析 XML 文件中的所有元素并在日志文件中查看,我的解析代码如下所示,
-(id) loadXMLByURL:(NSString *)urlString{
tweets = [[NSMutableArray alloc] init];
NSURL *url = [NSURL URLWithString:urlString];
NSData *data = [[NSData alloc] initWithContentsOfURL:url];
parser = [[NSXMLParser alloc] initWithData:data];
parser.delegate = self;
[parser parse];
return self;}
-(void) parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict {
if([elementName isEqualToString:@"Products"]){
currentTweet = [egsBase alloc];}}
-(void) parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{
if([elementName isEqualToString:@"img"]){
currentTweet.img=[UIImage imageWithData: [NSData dataWithContentsOfURL: [NSURL URLWithString:currentNodeContent]]];}
if ([elementName isEqualToString:@"Products"]) {
[tweets addObject:currentTweet.img];
currentTweet = nil;
currentNodeContent = nil;}}
- (void) parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{
currentNodeContent = (NSMutableString *) [string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];}
我使用类名解析为XmlParsing
. 在控制器类中,我已经实现了类文件XmlParsing
,XmlParsing xmlparser;
现在在 viewDidLoad() 函数中我使用这样的代码,
- (void)viewDidLoad{
[super viewDidLoad];
xmlParser = [[XMLParsing alloc] loadXMLByURL:@"http://images.com/Products.xml"];
UIImage *currentImage = [[xmlParser tweets] objectAtIndex:0];
customimage.image = currentImage;}
这里customimage
是 UIImageView 的参考,现在的问题是我只能获取最后一个元素值并显示在故事板中连接的 UIImageView 中(即)为了更好地理解它只显示最后一个元素图像而不是我在元素中使用的先前元素. 如何解决这个问题?我在哪里做错了。请建议我。
XML的结构
<Products>
<products id="1">
<img>http://images.com/images/Main_pic.png</img>
</products>
<products id="2">
<img>http://images.com/images/image1.png</img>
</products>
</Products>
我的 NSLog 显示用于解析 XML 文件,
images <UIImage: 0x71529a0>
images <UIImage: 0x74a6750>
当我打印以检查我得到的图像时,它显示当前图像为,
Current,<UIImage: 0x74a6750>
在这里您可以看到当前图像仅显示最后一个元素而不是前一个元素