所謂的解析無非就是:從事先規定好的格式中提取資料。
ios 開發常見的解析:xml 解析 (用的不是很多, 大約20%左右,一般大專案能用到)、 json解析(這個用得非常的多)
xml 資料結構的語法:
一對尖括號代表乙個節點,或者標籤
只有乙個根節點
節點可以互相巢狀
沒有子節點的節點稱謂葉子節點
讓我們在自己的工程中建立乙個property list
劉喆
18120
劉少輝12114
龔寧17114
吳東洋10888
我們先用**把 xml 引入進來, **如下:
#pragma mark
#pragma dom 解析
- (void)domparser if ([[child name] isequaltostring:@"age"]) if ([[child name] isequaltostring:@"tel"]) }}
}nslog(@"arr====%@",stuarray);
}
執行解析協議
@inte***ce saxxmlparser : nsobject
@property (nonatomic,retain)nsstring *currentvalue;
@property (nonatomic,assign)iddelegate;
- (void)startparser;
解析的具體過程
//sax 解析啦
- (void)startparser
static nsstring *kroot = @"root";
static nsstring *kstuarray = @"stu_array";
static nsstring *kstudent = @"student";
static nsstring *kname = @"name";
static nsstring *kage = @"age";
static nsstring *ktel = @"tel";
- (void)parser:(nsxmlparser *)parser didstartelement:(nsstring *)elementname namespaceuri:(nsstring *)namespaceuri qualifiedname:(nsstring *)qname attributes:(nsdictionary *)attributedict
if ([elementname isequaltostring:kstudent])
}- (void)parser:(nsxmlparser *)parser foundcharacters:(nsstring *)string
- (void)parser:(nsxmlparser *)parser didendelement:(nsstring *)elementname namespaceuri:(nsstring *)namespaceuri qualifiedname:(nsstring *)qname
if ([elementname isequaltostring:kage])
if ([elementname isequaltostring:ktel])
if ([elementname isequaltostring:kroot])
nslog(@"%s*****==2",__func__);
}
高階資料結構
struct treenode treenode是經典的二叉樹節點,在資料的序列化和反序列按照層遍歷來處理的。以上二叉樹會被序列化為 1 root節點1,是第一層 2,3 然後第二層是2,3 4,第三層分別是2節點的兩個孩子節點空,用 來表示,然後3節點的左孩子為4,右孩子節點為 5 第四層4節點的...
高階資料結構
與普通佇列的區別 1.保證每次取出的元素時佇列中優先順序最高的 2.優先級別可自定義 場景 從雜亂無序的資料中按照一定的順序 或者優先順序 篩選資料 本質 1.二叉堆的結構,堆在英文裡叫binary heep 2.利用乙個陣列結構來實現完全二叉樹 特性 1.陣列裡的第乙個元素array 0 擁有最高...
高階資料結構c
動態查詢字首和 vector int bits 放樹狀陣列 int n 原陣列的大小 1表示樹狀陣列的大小,為什麼要 1呢,因為樹狀陣列多了乙個前0個數的和 intquery int x void add int i,int x 功能比樹狀陣列多一點 const int e 100006 struc...