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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 從YYImage原始碼中學習如何處理圖片顯示原始碼
- WordPress 生成網站地圖顯示 XML 解析錯誤:格式不佳的處理方法網站地圖XML
- 如何在終端中顯示圖片
- JavaScript中的圖片處理與合成(四)JavaScript
- JavaScript中的圖片處理與合成(一)JavaScript
- JavaScript中的圖片處理與合成(二)JavaScript
- 呼叫系統檔案管理器選擇圖片,呼叫系統裁剪AIP對圖片處理,顯示裁剪之後的圖片...AI
- Nodejs專案網頁圖示的處理NodeJS網頁
- psd圖片不能在網頁上顯示網頁
- SAP UI5 Web Component for React的圖示和圖片處理UIWebReact
- Python 影像處理 OpenCV (2):畫素處理與 Numpy 操作以及 Matplotlib 顯示影像PythonOpenCV
- Overleaf中插入pdf圖片只顯示圖片路徑的解決方式
- CSS圖片的灰色顯示效果CSS
- 002.00 圖片處理
- Thumbnailator處理圖片AI
- 【YLCircleImageView】圖片處理View
- webpack圖片處理Web
- js將選擇的圖片顯示在img中JS
- 圖片上傳及圖片處理
- 安卓圖片顯示與網路訪問安卓
- WIN10網站圖片顯示不了怎麼辦 win10網站圖片無法顯示恢復方法Win10網站
- web專案中圖示的前端處理方案Web前端
- SwiftUI Image 圖片處理SwiftUI
- webpack 圖片處理 loaderWeb
- Python批量處理圖片Python
- windows10照片檢視器無法顯示圖片記憶體不足處理方法Windows記憶體
- 走近webpack(3)–圖片的處理Web
- vue專案中顯示 網路路徑的圖片,報控制檯報undefinedVueUndefined
- DDGScreenShot —iOS 圖片處理--多圖片拼接 (swift)iOSSwift
- Win10淘寶網站圖片無法顯示如何解決_Win10淘寶網圖片不顯示的解決步驟Win10網站
- win10圖示錯誤顯示怎麼改回來_win10電腦圖示顯示錯誤處理方法Win10
- 小程式button背景顯示圖片
- vue el-image 顯示圖片Vue
- 圖片上傳顯示替換
- 用label顯示帶圖片的富文字
- 線上圖片製作網站哪個好 PS圖片處理教程網站
- Android中OpenGL濾鏡和RenderScript圖片處理Android
- 圖片編輯工具:FotoJet Photo Editor更好的處理圖片