<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                由于我們搭建好了Apache服務器,那么我們接下來看一下如何解析服務器返回的xml文件 雖然開發中,服務器返回的xml格式的數據較少,但是偶爾還是會有的。 由于解析xml沒有比較好的第三方框架,所以我們還是乖乖的苦逼的寫代碼,雖然說,代碼沒有難度 xml數據: ~~~ <videos> <video videoId="1"> <name>張三</name> <teacher>張老師</teacher> </video> </videos> ~~~ 首先從服務器獲取回來數據先 ~~~ NSURL *url = [NSURL URLWithString:@"http://localhost/videos.xml"]; NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:1 timeoutInterval:10.0]; [NSURLConnection sendAsynchronousRequest:request queue:[[NSOperationQueue alloc]init] completionHandler:^(NSURLResponse * _Nullable response, NSData * _Nullable data, NSError * _Nullable connectionError) { //創建xml解析器 NSXMLParser *parser = [[NSXMLParser alloc]initWithData:data]; //設置代理 parser.delegate = self; //開始解析 [parser parse]; }]; ~~~ 我們依次的看一下我們要用到的代理方法 **開始解析調用(只會調用一次)** ~~~ - (void)parserDidStartDocument:(NSXMLParser *)parser { NSLog(@"1.開始文檔"); } ~~~ **每發現一個開始節點就調用** ~~~ /** * 每發現一個節點就調用 * * @param parser 解析器 * @param elementName 節點名字 * @param attributeDict 屬性字典 */ * (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(nullable NSString *)namespaceURI qualifiedName:(nullable NSString *)qName attributes:(NSDictionary<NSString *, NSString *> *)attributeDict { NSLog(@"2.發現節點:%@",elementName); if ([elementName isEqualToString:@"video"]) { //創建模型對象 self.video = [[ZYVideo alloc]init]; } [self.elementNameString setString:@""]; } ~~~ **發現節點內容** ~~~ - (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string { NSLog(@"3.發現節點內容:%@",string); //把發現的內容進行拼接 [self.elementNameString appendString:string]; } ~~~ **發現結束節點** ~~~ - (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(nullable NSString *)namespaceURI qualifiedName:(nullable NSString *)qName { NSLog(@"3.發現結束節點 %@",elementName); // NSLog(@"拼接的內容%@",self.elementNameString); if ([elementName isEqualToString:@"name"]) { self.video.name = self.elementNameString; }else if ([elementName isEqualToString:@"teacher"]) { self.video.teacher = self.elementNameString; } } ~~~ **解析完畢調用** ~~~ - (void)parserDidEndDocument:(NSXMLParser *)parser { NSLog(@"解析完畢---------"); NSLog(@"%@",self.video); } ~~~ 提前做好的懶加載: ~~~ #pragma mark - 懶加載 - (NSMutableString *)elementNameString { if (_elementNameString == nil) { _elementNameString = [[NSMutableString alloc]init]; } return _elementNameString; } ~~~ 搞定:看結果: ![解析XML](https://box.kancloud.cn/2016-04-07_5706110286e08.jpg "")
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看