iPhone中XML處理以及網路上的圖片顯示
xml處理:
iPhone開發中,XML處理的方式與.net區別很大。個人感覺沒有donot那麼方便。蘋果sdk中提供了NSXMLParser這個類庫來解析xml。它需要一個url作為輸入引數,透過NSXMLParser的委託方法來解析這個xml檔案。NSXMLParser中主要有三個委託方法來解析XML:
1、didStartElement
2、didEndElement
3、foundCharacters
didStartElement:當解析器物件遇到xml的開始標記時,呼叫這個方法。
- (void)parser:(NSXMLParser*)parser didStartElement:(NSString *) elementName namespaceURI:(NSString *)namespaceURI qualifiedName: (NSString *)qName attributes:(NSDictionary *)attributeDict
didStartElement:
當解析器物件遇到xml的結束標記時,呼叫這個方法。
-(void)parser:(NSXMLParser*)parser didEndElement:(NSString *)elementName namespaceURI:(NSString*)namespaceURI qualifiedName:(NSString *)qName foundCharacters:
當解析器找到開始標記和結束標記之間的字元時,呼叫這個方法。
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
在iphone中顯示網路上的圖片:
透過一個url展示圖片,分為三個步驟:
1、透過url建立一個NSURL物件
2、透過NSURL物件將圖片資料載入到NSData物件中
3、將NSData物件賦給UIImage
NSURL *url = [NSURL URLWithString:@”www.cnblogs.comimagessample.jpg”]; NSData *data = [NSData dataWithContentsOfURL:url]; UIImage *image = [[UIImage alloc] intiWithData:data];
建立一個view based application,命名為XMLWebImages下面我們將圖片的地址儲存在伺服器的一個xml檔案中,透過解析xml,將圖片的地址解析出來,然後展示。
開啟XMLWebImagesViewController.h。新增一個名為webScrollView 的UIScrollView型別的物件屬性,並加上IBOutlet標識。
#import@interface XMLWebImageViewController : UIViewController { IBOutlet UIScrollView *webScrollView; } @property (nonatomic, retain) IBOutlet UIScrollView * webScrollView; @synthesize scrollView;
建立一個命名為XMLWebView,並繼承UIView的子類,這這個子類中新增UIImageView屬性物件,命名為imageView,並加上IBOutlet標識。
@interface XMLWebView : UIView { IBOutlet UIImageView *imageView; } @property (nonatomic, retain) IBOutlet UIImageView *imageView; @synthesize imageView;
建立一個.XIB檔案,上面放置一個UIImageView,與上面的程式碼中的imageView建立關聯。
建立一個實體類,這個類裡面只有一個屬性,用來存放圖片的地址:
@interface XMLWebElement: NSObject { UIImage *imgXML; } @property (nonatomic, retain) UIImage * imgXML; @end@synthesize image;
現在建立從伺服器上獲取xml,解析xml,展示圖片的程式碼。開啟XMLWebImagesViewController.h,建立一個NSXMLParser物件。
一個存放連結實體物件的陣列xmlElements。一個臨時的XMLWebElement 物件。
@interface XMLWebImagesViewController: UIViewController { IBOutlet UIScrollView *scrollview; NSXMLParser *xmlParser; NSMutableString *currentNode; NSMutableArray *xmlElements; XMLWebElement *tempElement; }
在viewDidLoad 方法中為xmlElements 分配記憶體,初始化parser物件的xml地址:
- (void)viewDidLoad { [super viewDidLoad]; xmlElements = [[NSMutableArray alloc] init]; xmlParser = [[NSXMLParser alloc] initWithContentsOfURL: [NSURL URLWithString:@"http://www.cnblogs.com/images.xml"]]; [xmlParser setDelegate:self]; [xmlParser parse]; }
伺服器上的xml結構如下:解析xml的三個方法的程式碼如下:
http://www.cnblogs.com/testimage1.jpg http://www.cnblogs.com/testimage2.jpg
解析xml的三個委託方法程式碼如下:
- (void)xmlParser:(NSXMLParser *)xmlParser didStartElement: (NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict { if(![elementName compare:@"PictureInfo"]) { tempElement = [[iCodeBlogXMLElement alloc] init]; } else if(![elementName compare:@"imageURL"]) { currentAttribute = [NSMutableString string]; } else if(![elementName compare:@"imageTitle"]) { currentAttribute = [NSMutableString string]; } } - (void)parser:(NSXMLParser *)parser didEndElement:(NSString *) elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName { if(![elementName compare:@"PictureInfo"]) { [xmlElementObjects addObject:tempElement]; } else if(![elementName compare:@"imageURL"]) { NSURL *imageURL = [NSURL URLWithString:currentAttribute]; NSData *data = [NSData dataWithContentsOfURL:imageURL]; UIImage *image = [[UIImage alloc] initWithData:data]; [tempElement setImage:image]; } else if(![elementName compare:@"imageTitle"]) { NSLog(@"The image title is %@", currentAttribute); [tempElement setImageTitle:currentAttribute]; } else if(![elementName compare:@"Pictures"]) { [self layoutSubview]; } } - (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string { if(self.currentAttribute) { [self.currentAttribute appendString:string]; } }
這樣我們就將xml中的圖片地址解析出來。然後我們下面程式碼展示圖片:
NSURL *url = [NSURL URLWithString:urlString]; NSData *data = [NSData dataWithContentsOfURL:url]; UIImage *image = [[UIImage alloc] intiWithData:data];
總結:本文透過程式碼講述了iphone中xml解析以及網路上圖片的展示。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/3137/viewspace-2799971/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- ImageView顯示網路上的圖片View
- 顯示網路圖片變形的處理
- 從YYImage原始碼中學習如何處理圖片顯示原始碼
- WordPress 生成網站地圖顯示 XML 解析錯誤:格式不佳的處理方法網站地圖XML
- Android圖片處理:識別影象方向並顯示Android
- 網頁圖片不能顯示 網頁圖片顯示不出來的解決辦法網頁
- img圖片無法顯示利用onerror事件顯示替代圖片Error事件
- c# winform下sql圖片二進位制儲存/讀取/顯示/寫入XML/讀取XML顯示C#ORMSQLXML
- 安卓圖片顯示與網路訪問安卓
- JavaScript中的圖片處理與合成(四)JavaScript
- JavaScript中的圖片處理與合成(一)JavaScript
- JavaScript中的圖片處理與合成(二)JavaScript
- Overleaf中插入pdf圖片只顯示圖片路徑的解決方式
- 呼叫系統檔案管理器選擇圖片,呼叫系統裁剪AIP對圖片處理,顯示裁剪之後的圖片...AI
- React-Quill中的圖片上傳及顯示ReactUI
- js將選擇的圖片顯示在img中JS
- CSS圖片的灰色顯示效果CSS
- springmvc中圖片回顯返回位元組流陣列顯示圖片完整案例SpringMVC陣列
- GridView中控制圖片的顯示大小的例項View
- psd圖片不能在網頁上顯示網頁
- webpack圖片處理Web
- Thumbnailator處理圖片AI
- iOS 圖片處理iOS
- 圖片上傳及圖片處理
- iphone 將圖片處理成灰色(Gray)的iPhone
- Android用ImageView顯示本地和網上的圖片AndroidView
- WIN10網站圖片顯示不了怎麼辦 win10網站圖片無法顯示恢復方法Win10網站
- Java——圖片滾動顯示Java
- SAP UI5 Web Component for React的圖示和圖片處理UIWebReact
- Nodejs專案網頁圖示的處理NodeJS網頁
- [Android]Layout中ImageView中圖片的對齊顯示問題AndroidView
- web專案中圖示的前端處理方案Web前端
- vue專案中顯示 網路路徑的圖片,報控制檯報undefinedVueUndefined
- 水庫斷面水位中--水勢顯示效果處理--日期處理 SQLSQL
- opencv圖片上如何顯示兩個小圖片OpenCV
- win7圖片只顯示圖示不顯示預覽圖解決方案Win7圖解
- Python 影像處理 OpenCV (2):畫素處理與 Numpy 操作以及 Matplotlib 顯示影像PythonOpenCV
- Android中顯示html標籤或者帶圖片AndroidHTML