#import <UIKit/UIKit.h>
@interface MoreAppViewController : UITableViewController {
UIActivityIndicatorView * activityIndicator;
NSXMLParser *xmlParser;
NSMutableArray *appList;
NSMutableDictionary *item;
NSString *currentElement;
NSMutableString *name, *description, *picurl, *url;
}
-(id)init;
-(void) parseXMLFileAtURL:(NSString*)URL;
@end
#import "MoreAppViewController.h"
@implementation MoreAppViewController
-(id)init{
self = [super init];
if(self!=nil){
self.title = @"More";
}
return self;
}
/*
// The designated initializer. Override if you create the controller programmatically and want to perform customization that is not appropriate for viewDidLoad.
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
if (self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]) {
// Custom initialization
}
return self;
}
*/
// Implement loadView to create a view hierarchy programmatically, without using a nib.
- (void)loadView {
[super loadView];
if ([appList count] == 0) {
/*
// make the activity indicator as the right side button
CGRect frame = CGRectMake(0.0, 0.0, 25.0, 25.0);
activityIndicator = [[UIActivityIndicatorView alloc] initWithFrame:frame];
[activityIndicator startAnimating];
[activityIndicator sizeToFit];
activityIndicator.autoresizingMask = (UIViewAutoresizingFlexibleLeftMargin |
UIViewAutoresizingFlexibleRightMargin |
UIViewAutoresizingFlexibleTopMargin |
UIViewAutoresizingFlexibleBottomMargin);
UIBarButtonItem *loadingView = [[UIBarButtonItem alloc] initWithCustomView:activityIndicator];
loadingView.target = self;
self.navigationItem.rightBarButtonItem = loadingView;
*/
NSString * path = @"http://www.host.net/info/info.xml";
[self parseXMLFileAtURL:path];
}
}
-(void) parseXMLFileAtURL:(NSString*)URL{
appList = [[NSMutableArray alloc]init];
//you must then convert the path to a proper NSURL or it won't work
NSURL *xmlURL = [NSURL URLWithString:URL];
// here, for some reason you have to use NSClassFromString when trying to alloc NSXMLParser, otherwise you will get an object not found error
// this may be necessary only for the toolchain
xmlParser = [[NSXMLParser alloc] initWithContentsOfURL:xmlURL];
// Set self as the delegate of the parser so that it will receive the parser delegate methods callbacks.
[xmlParser setDelegate:self];
// Depending on the XML document you're parsing, you may want to enable these features of NSXMLParser.
[xmlParser setShouldProcessNamespaces:NO];
[xmlParser setShouldReportNamespacePrefixes:NO];
[xmlParser setShouldResolveExternalEntities:NO];
[xmlParser parse];
}
- (void)parserDidStartDocument:(NSXMLParser *)parser {
NSLog(@"found file and started parsing");
}
- (void)parser:(NSXMLParser *)parser parseErrorOccurred:(NSError *)parseError {
NSString * errorString = [NSString stringWithFormat:@"Unable to download story feed from web site (Error code %i )", [parseError code]];
NSLog(@"error parsing XML: %@", errorString);
UIAlertView * errorAlert = [[UIAlertView alloc] initWithTitle:@"Error loading content" message:errorString delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
[errorAlert show];
}
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict{
//NSLog(@"found this element: %@", elementName);
currentElement = [elementName copy];
if ([elementName isEqualToString:@"app"]) {
// clear out our story item caches...
item = [[NSMutableDictionary alloc] init];
name = [[NSMutableString alloc] init];
description = [[NSMutableString alloc] init];
picurl = [[NSMutableString alloc] init];
url = [[NSMutableString alloc] init];
}
}
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{
//NSLog(@"ended element: %@", elementName);
if ([elementName isEqualToString:@"app"]) {
// save values to an item, then store that item into the array...
[item setObject:name forKey:@"name"];
[item setObject:description forKey:@"description"];
[item setObject:picurl forKey:@"picurl"];
[item setObject:url forKey:@"url"];
[appList addObject:[item copy]];
NSLog(@"adding story: %@", name);
}
}
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{
//NSLog(@"found characters: %@", string);
// save the characters for the current item...
if ([currentElement isEqualToString:@"name"]) {
[name appendString:string];
} else if ([currentElement isEqualToString:@"description"]) {
[description appendString:string];
} else if ([currentElement isEqualToString:@"picurl"]) {
[picurl appendString:string];
} else if ([currentElement isEqualToString:@"url"]) {
[url appendString:string];
}
}
- (void)parserDidEndDocument:(NSXMLParser *)parser {
[activityIndicator stopAnimating];
[activityIndicator removeFromSuperview];
NSLog(@"all done!");
NSLog(@"stories array has %d items", [appList count]);
//[newsTable reloadData];
[self.tableView reloadData];
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return [appList count];
}
- (UITableViewCell *)tableView:(UITableView *)mtableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"app-flist-cell";
UITableViewCell *cell = (UITableViewCell*)[mtableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (!cell){
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier]autorelease];
}
NSUInteger row = [indexPath row];
NSDictionary *caiDictionary = [appList objectAtIndex:row];
cell.textLabel.text = [caiDictionary objectForKey:@"name"];
cell.detailTextLabel.text = [caiDictionary objectForKey:@"description"];
NSString *iconurl = [caiDictionary objectForKey:@"picurl"];
//if([picurl1 isEqualToString:@""]){
////}
NSLog(@"%@",iconurl);
NSURL *iconurl_1 = [NSURL URLWithString:iconurl];
NSData *data = [NSData dataWithContentsOfURL:iconurl_1];
UIImage *img = [[UIImage alloc]initWithData:data];
cell.imageView.image = [UIImage imageNamed:@"icon.png"];
//cell.imageView.image = img;
[img release];
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
return cell;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
NSLog(@"#######");
NSUInteger row = [indexPath row];
NSDictionary *dictionary = [appList objectAtIndex:row];
NSString *appurl = [dictionary objectForKey:@"url"];
NSLog(@"##%@",appurl);
//[[UIApplication sharedApplication] openURL:[NSURL URLWithString:url1]];
//NSString *thePhone = [NSString stringWithFormat:@"tel:%@",theNumber];
//NSURL *url = [[NSURL alloc] initWithString:thePhone];
NSURL *ccj = [NSURL URLWithString:appurl];
BOOL a = [[UIApplication sharedApplication] openURL:ccj];
if(a){
NSLog(@"00");
}else{
NSLog(@"001");
}
//[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"tel://123456"]];
}
/*
// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad {
[super viewDidLoad];
}
*/
/*
// Override to allow orientations other than the default portrait orientation.
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
// Return YES for supported orientations
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
*/
- (void)didReceiveMemoryWarning {
// Releases the view if it doesn't have a superview.
[super didReceiveMemoryWarning];
// Release any cached data, images, etc that aren't in use.
}
- (void)viewDidUnload {
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
}
- (void)dealloc {
[super dealloc];
}
@end
NSString *url = [[NSString alloc] initWithFormat:@"http://www.example.com.pt/iPhone/resize.php?max_height=80&max_width=58&qt=80&imgpath=%@",[aNoticia.img substringFromIndex:3]];
cell.imageView.image = [UIImage imageWithData:[NSData dataWithContentsOfURL:[ NSURL URLWithString:url]]];
分享到:
相关推荐
XMLParser在iOS开发中是一种常用的解析XML数据的工具,它允许开发者将XML文件转换为可操作的数据结构,便于在iPhone应用程序中使用。XML(Extensible Markup Language)是一种标记语言,常用于存储和传输结构化数据...
本示例主要探讨如何在iPhone应用中解析XML结构的RSS feed,以便将新闻标题展示在表格视图中。 首先,让我们了解XML的基本概念。XML是一种标记语言,用于描述数据的结构和内容。它使用自定义的标签来表示数据,使得...
除了`NSXMLParser`,iOS还提供了`XMLParser`类,它是C语言接口,同样支持DOM和SAX解析。另外,第三方库如GDataXML-ObjectiveC提供了一个更易用的DOM解析接口。 3. 更多XML解析方法: 除了DOM和SAX,还有基于Pull...
对于有经验的开发者,这个简单的XML解析示例可能过于基础,他们可能会考虑使用更高效的解析库,如GDataXML或者使用Swift的XMLParser,它们提供了更高级的功能,如异步解析和更好的性能。此外,还可以探索XPath或XML ...
本教程将重点介绍如何在iPhone应用中进行XML解析,使开发者能够理解并有效地处理XML数据。 首先,我们需要了解XML的基本概念。XML是一种标记语言,它的结构由元素(Elements)、属性(Attributes)、文本内容(Text...
XML的灵活性和可扩展性使得它成为网络开发中的重要工具,尤其是在服务器与移动设备如iPhone之间交换数据时。本篇文章将深入探讨如何在iPhone应用中进行XML解析。 首先,我们需要了解在iOS中解析XML的两种主要方法:...
在iOS开发中,XML(eXtensible Markup Language)是一种常用的数据交换格式,它用于存储结构化数据。本文将深入探讨如何使用...在实际项目中,可以根据需要扩展XMLParser类,以适应更复杂的XML结构和业务需求。
### iPhone开发中的XML解析详解 在移动应用开发领域,尤其是针对iPhone的应用开发中,XML(Extensible Markup Language)解析是一项关键技术。XML作为一种广泛使用的数据交换格式,在web服务、配置文件处理以及各种...
本Demo是针对iPhone平台设计的一个XML解析示例,旨在帮助开发者了解如何在Objective-C中处理XML数据。 XML文件结构清晰,易于人阅读,同时也方便机器解析。在iOS中,有两种主要的XML解析方式:SAX(Simple API for ...
本教程将深入探讨如何在iPhone应用程序中解析XML文件,主要涉及的技术点包括Objective-C编程、网络连接以及NSXMLParser类的使用。 首先,我们要了解XML的基本结构。XML文档由元素、属性、文本内容等组成,通过层次...
- 解析器的代理方法会在遇到XML元素时被调用,例如`parser:didStartElement:namespaceURI:qualifiedName:attributes:`和`parser:foundCharacters:`。 - 在这些方法中,可以收集元素的信息并填充数据模型。 6. **...
本文将深入探讨iPhone开发中的XML解析流程,帮助开发者更好地理解和使用这一技术。 首先,我们要了解XML的基本概念。XML是一种自描述性的标记语言,它的结构清晰,易于人阅读,同时也方便机器解析。在iOS开发中,...
本文将深入探讨如何在iPhone和iPad应用中处理XML文件,以"XMLDemo"为例,来讲解相关技术。 首先,XML(eXtensible Markup Language)是一种用于标记数据的语言,广泛应用在数据交换、配置文件等领域。它的结构清晰...
本教程将引导初学者了解如何在iPhone开发中使用XML和JSON进行数据解析。 XML是一种标记语言,允许开发者定义自定义的标签来描述数据结构。它的主要优点在于结构清晰,易于人类阅读,并且有强大的支持库,可以在各种...
XmlPackage *xmlPackage = [[XmlPackage alloc]init]; NSData *data = [xmlPackage objctPackage:map objectName:@"book1" xmlTemplateName:@"template1"]; 或者 NSData *data = [xmlPackage listPackage:list ...
在标题“iPhone NSXMLParser”中,我们关注的是如何在iPhone应用程序中使用`NSXMLParser`来解析XML文件。这个过程通常包括以下步骤: 1. **初始化解析器**:首先,你需要创建一个`NSXMLParser`实例,并传入XML数据...
然后,利用NSXMLParser或Swift的XMLParser进行解析,提取出标题、描述、链接等关键信息。为了提高性能,可以考虑将解析后的数据存储在Core Data中,实现离线阅读。 考虑到用户体验,RssReader应用应具备自动刷新和...
其中,用户界面设计可能用到Storyboard或SwiftUI,网络请求可能使用URLSession或第三方库如Alamofire,数据解析则可能是JSON或XML格式,需要用到JSONSerialization或XMLParser等。 服务器端的Mac App通常是用来处理...
使用TouchXML在iPhone开发、iPad开发中实现XML_Parser
由于公司业务需要开发一个微信小程序,起初并没有太在意解析XML这个问题,因为小程序是用的JS,所以直接用DOMParser解析就好了嘛,而且在微信开发者工具上也是能正常跑的,然后问题来了,部署到iphone7上运行的时候...