基於系統NSXMLParser的XML解析的工具

這個可以做什麼?

一個簡單的基於系統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

最後

此內容只是用於分享交流之用,有什麼問題歡迎提出!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章