XML解析1_XMLParser

前端之家收集整理的这篇文章主要介绍了XML解析1_XMLParser前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
  1. #import "ViewController.h"
  2. #import "TBXML.h"
  3.  
  4. @interface ViewController () <NSXMLParserDelegate>
  5.  
  6. @property (nonatomic,strong) NSMutableArray *mulArray;
  7. @property (nonatomic,strong) NSMutableDictionary *mulDict;
  8. @property (nonatomic,copy) NSString *key;
  9. @property (nonatomic,copy) NSString *startTag;
  10.  
  11. @property (nonatomic,strong) NSMutableArray *dataArray;
  12.  
  13. @end
  14.  
  15. @implementation ViewController
  16.  
  17. - (void)viewDidLoad {
  18. [super viewDidLoad];
  19. }
  20.  
  21.  
  22. - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
  23. [self saxXML];
  24. }
  25.  
  26. - (void)saxXML {
  27. // 1.
  28. // NSString *path = [[NSBundle mainBundle] pathForResource:@"Notes" ofType:@"xml"];
  29. // NSURL *url = [NSURL fileURLWithPath:path];
  30. // 2.
  31. // ----------创建对象
  32. NSURL *url = [[NSBundle mainBundle] URLForResource:@"Notes" withExtension:@"xml"];
  33. NSXMLParser *parser = [[NSXMLParser alloc] initWithContentsOfURL:url];
  34. // -----------设置委托
  35. parser.delegate = self;
  36. // -----------开始解析
  37. [parser parse];
  38. }
  39.  
  40. // <Note id="1">
  41. // <CDate>2012-12-21</CDate>
  42. // <Content>早上8点钟到公司</Content>
  43. // <UserID>Allen</UserID>
  44. // </Note>
  45. #pragma mark -
  46. #pragma mark xml parser delegate methods 5方法 1. 文件解析开始 2. 开始标签 3. 标签内容 4. 结束标签 5. 文件解析结束
  47.  
  48. /** 1. 文档解析开始的时候调用 */
  49. - (void)parserDidStartDocument:(NSXMLParser *)parser {
  50. _mulArray = [NSMutableArray array];
  51. NSLog(@"文档解析开始");
  52. }
  53.  
  54. /** 2. 碰到开始标签时候调用 */
  55. - (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict {
  56. if ([elementName isEqualToString:@"Note"]) {
  57. _key = attributeDict.allValues[0];
  58. _mulDict = [[NSMutableDictionary alloc] init];
  59. _startTag = elementName;
  60. NSLog(@"开始标签 : %@ 属性 : %@",elementName,attributeDict);
  61. }
  62. }
  63.  
  64. /** 3. 碰到两个标签之间的内容的时候调用 */
  65. - (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string {
  66. // 去掉空格和换行 trim整齐
  67. string = [string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
  68. if ([string isEqualToString:@""]) {
  69. return ;
  70. }
  71. [_mulDict setObject:string forKey:_startTag];
  72. NSLog(@"两个标签之间的内容 : %@",string);
  73. }
  74.  
  75. /** 4. 碰到结束标签时候调用 */
  76. - (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName {
  77. if ([elementName isEqualToString:@"Note"]) {
  78. NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
  79. [dict setObject:_mulDict forKey:_key];
  80. [_mulArray addObject:dict];
  81. }
  82. [NSString stringWithFormat:@"/%@",elementName];
  83. NSLog(@"结束标签 : %@",[NSString stringWithFormat:@"/%@",elementName]);
  84. printf("\n");
  85. }
  86.  
  87. /** 5. 文档解析结束的时候调用 */
  88. - (void)parserDidEndDocument:(NSXMLParser *)parser {
  89. NSLog(@"---------%@",_mulArray);
  90. NSLog(@"文档解析结束");
  91. }
  92.  
  93. @end
  94.  
  95. <?xml version="1.0" encoding="UTF-8"?>
  96. <Notes>
  97. <Note id="1">
  98. <CDate>2012-12-21</CDate>
  99. <Content>早上8点钟到公司</Content>
  100. <UserID>Allen</UserID>
  101. </Note>
  102. <Note id="2">
  103. <CDate>2012-12-22</CDate>
  104. <Content>开发企业微信 模块一</Content>
  105. <UserID>Allen</UserID>
  106. </Note>
  107. <Note id="3">
  108. <CDate>2012-12-23</CDate>
  109. <Content>开发企业微信 模块二</Content>
  110. <UserID>Allen</UserID>
  111. </Note>
  112. <Note id="4">
  113. <CDate>2012-12-24</CDate>
  114. <Content>开发企业微信 模块三</Content>
  115. <UserID>Allen</UserID>
  116. </Note>
  117. <Note id="5">
  118. <CDate>2012-12-25</CDate>
  119. <Content>开发企业微信 模块四</Content>
  120. <UserID>Allen</UserID>
  121. </Note>
  122. <Note id="6">
  123. <CDate>2012-12-26</CDate>
  124. <Content>开发企业微信 上线</Content>
  125. <UserID>Allen</UserID>
  126. </Note>
  127. </Notes>

猜你在找的XML相关文章