iOS -資料庫網路之xml解析之遠程解析XML

来源:http://www.cnblogs.com/jingchaoboke/archive/2016/11/08/6042236.html
-Advertisement-
Play Games

1.IOS中XML文件獲取 //設置遠程訪問地址 NSURL *url=[NSURL URLWithString:@""]; //創建動態URL請求,並初始化 NSMutableURLRequest * request=[[NSMutableURLRequest alloc]initWithURL: ...


1.IOS中XML文件獲取    //設置遠程訪問地址     NSURL *url=[NSURL URLWithString:@""];       //創建動態URL請求,並初始化     NSMutableURLRequest * request=[[NSMutableURLRequest alloc]initWithURL:url];       //設置訪問方式為POST     [request setHTTPMethod:@"post"];       //設置傳參參數(字元串)     NSString * str=@"";       //二進位的參數字元串     NSData * data=[str dataUsingEncoding:NSUTF8StringEncoding];       //放在請求里     [request setHTTPBody:data];       //發送請求     NSData * resData=[NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];       NSString * s=[[NSString alloc]initWithData:resData encoding:NSUTF8StringEncoding];     NSLog(@"%@",s);   //通過二進位的數據創建xml轉化器   NSXMLParser * parser=[[NSXMLParser alloc]initWithData:data];   //設置代理在對應.h文件中實現該代理<NSXMLParserDelegate> [parser setDelegate:self];   //啟動轉換 [parser parse]; 2.XML中常用的幾種行為   //文檔轉化開始   -(void)parserDidStartDocument:(NSXMLParser)parser {   }   //文檔轉換結束   -(void)parserDidEndDocument:(NSXMLParser)parser {   }   //元素開始 -(void)parser:(NSXMLParser *)parser didStartElement:(NSString *) elementName namespaceURI:(NSString *) namespaceURI    qualifiedName:(NSString *) qName attributes:(NSDictionary *) attributeDict {   }   //元素結束 -(void)parser:(NSXMLParser *)parser didEndElement:(NSString *) elementName namespaceURI:(NSString *) namespaceURI     qualifiedName:(NSString *) qName  {   }   //發現字元串 -(void)parser:(NSXMLParser *) parser foundCharacters:(NSString *) string {   }   3.XML解析 對於XML格式為多個元素解析: XML代碼如下  <students> <student>  <name>張三</name>  <sex>男</sex> <age>21</age> </student></students> (1)創建該元素的類繼承NSOject(JCStudent) JCStudent.h中 //姓名 @property (strong,nonatomic) NSString * name; //性別 @property (strong,nonatomic) NSString * sex; //年齡 @property (assign,nonatomic) int age;   (2)ViewController.h中設置屬性   #import "JCStudent.h"   @interface ViewController : UIViewController<NSXMLParserDelegate> {     NSMutableArray * students;  //學生數組     BOOL isbz;                 //元素開始標誌     NSString * parName;  //字元串內容     JCStudent * student;  //student類      } (3)在ViewController.m中XML的幾個行為編寫代碼 在viewDidLoad方法中       //初始化動態數組     students=[[NSMutableArray alloc]initWithCapacity:100];   在“文檔轉換開始”方法中       //清空數據     [students removeAllObjects];     //字元串內容清空     parName=@"";     //標誌為NO     isbz=NO;   在“元素開始”方法中          if(isbz==YES){//如果標誌為YES          parName=elementName; //字元串內容賦值     }     if([elementName isEqualToString:@"student"]){//如果元素為student         isbz=YES; //標誌改為YES         student=[[JCStudent alloc]init]; //JCStudent初始化     }       在“發現字元串”方法中       if(isbz==YES && parName.length>0){//如果標誌為YES字元串內容有值       [student setValue:string forKey:parName];//添加字元串信息到屬性類中         parName=@"";//字元串內容清空     }   在“元素結束”方法中       if([elementName isEqualToString:@"student"]){//如果元素結束為student       [students addObject:student];//添加類到動態數組中         isbz=NO;//標誌設置為NO              }   在“文檔轉換結束”方法中       //遍曆數組     for(JCStudent * s in students){          NSLog(@"name=%@,sex=%@,age=%d",s.name,s.sex,s.age);//控制台輸出     }   對於XML格式為單個元素解析(attributeDict字典): XML代碼如下  <students> <student name=”張三”  sex=“男”  age=“21” /></students> (1)創建該元素的類繼承NSOject(JCStudent) JCStudent.h中 //姓名 @property (strong,nonatomic) NSString * name; //性別 @property (strong,nonatomic) NSString * sex; //年齡 @property (assign,nonatomic) int age;   (2)ViewController.h中設置屬性   #import "JCStudent.h"   @interface ViewController : UIViewController<NSXMLParserDelegate> {     NSMutableArray * students;  //學生數組     JCStudent * student;  //student類      } (3)在ViewController.m中XML的幾個行為編寫代碼 在viewDidLoad方法中       //初始化動態數組     students=[[NSMutableArray alloc]initWithCapacity:100];   在“文檔轉換開始”方法中       //清空數據     [students removeAllObjects];   在“元素開始”方法中       if([elementName isEqualToString:@"student"]){//如果開始元素為 student         student= [[JCStudent alloc]init];//student類初始化         NSArray * arr=[attributeDict allKeys];//新建數組獲取所有元素的key         for(NSString * str in arr){//遍曆數組             [student setValue:[attributeDict objectForKey:str] forKey:str];//添加數組到student類中,Value根據Key獲得         }     }     在“元素結束”方法中       if([elementName isEqualToString:@"student"]){//如果元素結束為student       [students addObject:student];//添加類到動態數組中              }   在“文檔轉換結束”方法中       //遍曆數組     for(JCStudent * s in students){          NSLog(@"name=%@,sex=%@,age=%d",s.name,s.sex,s.age);//控制台輸出     }

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • InfluxDB與傳統資料庫在概念上有許多的不同,本文就給大家介紹下InfluxDB中的一些基本概念,更多InfluxDB詳細教程請看:InfluxDB系列學習教程目錄 InfluxDB技術交流群:580487672(點擊加入) 一、與傳統資料庫中的名詞做比較 二、InfluxDB中獨有的概念 Po ...
  • Svn是比較優秀的版本控制工具,雖然功能和性能上無法和Git媲美,但由於其容易搭建和使用的特性,所以在各個小公司還是很受歡迎的。使用Git可參考《版本控制-Git伺服器搭建和常用命令使用》本文介紹svn伺服器搭建和常用命令介紹。 伺服器搭建 本地伺服器 http伺服器 命令 常用命令 不常用命令 一 ...
  • 一、故障案例① 今天上午在給測試組的IIS新增https的時候,發現遠程彈出如下錯誤: 由於沒有遠程桌面授權伺服器可以提供許可證,遠程會話被中斷.請跟伺服器管理員聯繫。 度了度,原來也是很常見的一種錯誤,解釋如下: Windows Server 2008 R2 由於沒有遠程桌面授權伺服器可以提供許可 ...
  • 源、更新源 如果剛安裝高版本的Ubuntu,想要裝低版本的軟體,但是在軟體中心有沒有安裝選項或者找不到鏈接的,可以先加入低版本的源列表,然後再執行:sudo apt-get update更新源列表,就可以找到了。 在此之前最好先cp一下/etc/apt/sources.list做個源文件備份,已被不 ...
  • 註意:此方法只適用於nv顯卡的電腦! 在網上尋找各種方法無果的情況下,選擇重新安裝顯卡驅動,成功登錄進入圖形界面。 一、首先需要在另外一臺電腦(windows系統也可以)上下載NVIDIA相應顯卡驅動,不知道的話可以使用命令lspci | grep -i nvidia查看顯卡型號,網址為http:/ ...
  • Kali Linux 秘籍 原書:Kali Linux Cookbook 譯者:飛龍 線上閱讀 PDF格式 EPUB格式 MOBI格式 Github Git@OSC 線上閱讀 PDF格式 EPUB格式 MOBI格式 Github Git@OSC 目錄: 第一章 安裝和啟動Kali 第二章 定製 Ka ...
  • 學習Linxu以來,一直堅持編譯方式安裝軟體包,貌似圈子裡面也是都傾向於編譯,可是搜索到的編譯方法都是一堆複製粘貼來的指令, 每個人都這麼編譯, 卻幾乎沒有人去寫明那些五花八門的編譯指令代表了什麼,是否適合自己的系統!參加工作後,覺得系統提供的PHP版本預設安裝就是挺好的,簡單明瞭,不需要在依賴包方 ...
  • CentOS下安裝FTP伺服器: 第一步,檢查伺服器端是否已經安裝FTP:[root@localhost centos]# rpm -q vsftpd 如果出現的是:[root@localhost centos]# package vsftpd is not installed ,說明vsftpd沒 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...