<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>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                在iPhone開發中,XML的解析有很多選擇,iOS SDK提供了NSXMLParser和libxml2兩個類庫,另外還有很多第三方類庫可選,例如TBXML、TouchXML、KissXML、TinyXML和GDataXML。這篇文章使用了NSXMLParser。 解析 XML 通常有兩種方式,DOM 和 SAX: * DOM解析XML時,讀入整個XML文檔并構建一個駐留內存的樹結構(節點樹),通過遍歷樹結構可以檢索任意XML節點,讀取它的屬性和值。而且通常情況下,可以借助XPath,直接查詢XML節點。 * SAX解析XML,是基于事件通知的模式,一邊讀取XML文檔一邊處理,不必等整個文檔加載完之后才采取操作,當在讀取解析過程中遇到需要處理的對象,會發出通知對其進行處理。 NSXMLParser是基于SAX的解析方式。NSXMLParser采用了委托設計模式,因此他的實現類需要采用協議并支持委托。NSXMLParser解析XML需要委托NSXMLParserDelegate實現。 1、初始化NSXMLParser 要使用NSXMLParser要先創建它,設置各種屬性,主要用到以下幾個方法: initWithContentsOfURL? 通過NSURL創建解析器 initWithData???????????????? 通過NSData創建解析器 setDelegate????????????????? 為解析器定義委托 parse?????????????????????????? 運行解析器 ~~~ NSXMLParser *parser=[[NSXMLParser alloc] initWithData:[xml dataUsingEncoding:NSUTF8StringEncoding]]; // NSXMLParser *parser=[[NSXMLParser alloc] initWithContentsOfURL:[NSURL URLWithString:@"http://earthquake.usgs.gov/earthquakes/catalogs/7day-M2.5.xml"]]; [parser setDelegate:self];//設置NSXMLParser對象的解析方法代理 [parser setShouldProcessNamespaces:NO]; [parser parse];//開始解析 ~~~ 2、委托方法 主要使用一下委托方法: ~~~ //發現元素開始符的處理函數 (即報告元素的開始以及元素的屬性) - (void)parser:(NSXMLParser *)parser         didStartElement:(NSString *)elementName         namespaceURI:(NSString *)namespaceURI         qualifiedName:(NSString *)qName         attributes:(NSDictionary *)attributeDict //處理標簽包含內容字符 (報告元素的所有或部分內容) - (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string //發現元素結束符的處理函數,保存元素各項目數據(即報告元素的結束標記) - (void)parser:(NSXMLParser *)parser         didEndElement:(NSString *)elementName         namespaceURI:(NSString *)namespaceURI         qualifiedName:(NSString *)qName //報告解析的結束 - (void)parserDidEndDocument:(NSXMLParser *)parser //報告不可恢復的解析錯誤 - (void)paser:parserErrorOccured ~~~ 執行[parser parse]后會依序執行: 1、didStartElement 2、foundCharacters 3、didEndElement 示例如下: ~~~ -(void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict { NSLog(@"xml_parser start %@ ",elementName); if ( [elementName isEqualToString:@"person"] ) { NSLog(@"xml_parser person "); if(personNameArrary==nil){ personNameArrary=[[NSMutableArray alloc] init]; } } if(itemValue!=nil){ itemValue=nil; } itemValue=[[NSMutableString alloc] init]; if ( [elementName isEqualToString:@"phone"] ) { NSString *atr=[attributeDict valueForKey:@"type"]; NSLog(@"xml_parser phone type: %@",atr); } } - (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string { NSLog(@"xml_parser value:%@",string); [itemValue appendString:string]; } - (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName { NSLog(@"xml_parser end %@ ",elementName); if ( [elementName isEqualToString:@"firstName"] ) { [personNameArrary addObject:itemValue]; } if ( [elementName isEqualToString:@"person"] ) { NSLog(@"xml_parser person end"); } } ~~~
                  <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>

                              哎呀哎呀视频在线观看