這個可以做什麼?
一個簡單的基於系統NSXMLParser的XML解析的工具
怎麼用?
第一步:傳入XML文件的路徑
NSString *filePath = [[NSBundle mainBundle] pathForResource:@”data” ofType:@”xml”];
第二步:調用工具進行解析,返回字典
NSMutableDictionary *dict = [[HYXMLParser sharedParser] getDictWithXMLPath:filePath];
適用範圍?
目前只有以下格式的XML文件可以正常解析,其他的暫時解析不了。
只支持一件嵌套,多級嵌套無法解析
<Note id="1">
<CDate>2016-01-01</CDate>
<Content>每天早上7點鐘起牀</Content>
<UserID>jack</UserID>
<Transport>地鐵</Transport>
<Time>一個小時</Time>
</Note>
實現原理:
基於系統的NSXMLParser解析,SAX解析,是事件驅動的解析,在解析到文件,元素,屬性的時候,會調用代理方法,在代理方法進行一些數據處理。
在元素開始的時候會調用的代理方法:
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary<NSString *,NSString *> *)attributeDict{
}
1、如果元素通過屬性傳遞數據的話:
<Note id="1">
</Note>
解析到的內容會放到代理方法的attributeDict中;這時候可以以這個字典爲基礎構建字典容器;
2、如果元素是通過子元素來傳遞數據的話:
<Note>
<CDate>2016-01-01</CDate>
<Content>每天早上7點鐘起牀</Content>
<UserID>jack</UserID>
<Transport>地鐵</Transport>
<Time>一個小時</Time>
</Note>
解析到的內容會分離開來,這時候需要自己做一些處理,構建字典容器,把解析到的內容依次添加到字典容器中,最後就可以得到最終的數據了。
XML轉JSON在線解析結果:
項目鏈接:
https://github.com/oceanfive/HYXMLParser
最後
此內容只是用於分享交流之用,有什麼問題歡迎提出!