GData解析XML文件

前端之家收集整理的这篇文章主要介绍了GData解析XML文件前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

如何将GData库引入自己的工程,我就不说了,这个网上一大堆。下面直接讲如何解析XML文件

http://api.douban.com/book/subjects?q=ios这个从豆瓣上请求的图书为例,下面是请求的内容

<Feedxmlns="http://www.w3.org/2005/Atom"xmlns:db="http://www.douban.com/xmlns/"xmlns:gd="http://schemas.google.com/g/2005"xmlns:openSearch="http://a9.com/-/spec/opensearchRSS/1.0/"xmlns:opensearch="http://a9.com/-/spec/opensearchRSS/1.0/">
<title> 搜索 ios 的结果 </title>
<opensearch:startIndex> 1 </opensearch:startIndex>
<opensearch:totalResults> 810 </opensearch:totalResults>
<entry>
<id>http://api.douban.com/book/subject/24846574</id>
<title>iOS开发指南:从零基础到App Store上架</title>
<categoryscheme="http://www.douban.com/2007#kind"term="http://www.douban.com/2007#book"/>
<author>
<name>关东升</name>
</author>
<linkhref="http://api.douban.com/book/subject/24846574"rel="self"/>
<linkhref="http://book.douban.com/subject/24846574/"rel="alternate"/>
<linkhref="http://img5.douban.com/spic/s26817976.jpg"rel="image"/>
<linkhref="http://m.douban.com/book/subject/24846574/"rel="mobile"/>
<db:attributename="isbn10">7115324441</db:attribute>
<db:attributename="isbn13">9787115324443</db:attribute>
<db:attributename="author">关东升</db:attribute>
<db:attributename="price">99.00</db:attribute>
<db:attributename="publisher">人民邮电出版社</db:attribute>
<db:attributename="pubdate">2013-7</db:attribute>
<gd:ratingaverage="0"max="10"min="0"numRaters="8"/>
</entry>
<opensearch:itemsPerPage> 10 </opensearch:itemsPerPage>
</Feed>

上面红色字体是一本书所包含的全部信息,每本书都含有相同的内容,下面解析红色字体的全部内容

假设你已经使用ASIHttpRequest或者NSURLConnection或者其他的下载类讲这个XML文件的数据全部下载下来,并保存到(NSMutableData*)data中。

下面创建GdataxMLDocument类

  1. NSError *error;
  2. GdataxMLDocument *doc=[[GdataxMLDocument alloc] initWithData:data options:0 error:&error];
  3. if (!doc) {
  4. return;
  5. }


下面获取所有的entry节点,这个有两种方法

1、

  1. GdataxMLElement * rootElement = [ doc rootElement];
  2. NSArray * arrays = [ rootElement elementsForName:@"entry"];

2、

  1. NSDictionary *dict=[NSDictionary dictionaryWithObjectsAndKeys:@"http://www.w3.org/2005/Atom",@"xmlns",nil];
  2. NSArray *arrays=[doc nodesForXPath:@"/xmlns:Feed/xmlns:entry" namespaces:dict error:&error];

获取entry节点下所有节点的信息

  1. for (GdataxMLElement *element in array) {
  2.         //<id>http://api.douban.com/book/subject/24846574</id>
  3.         NSString * id = [[[ element elementsForName:@"id"]lastObject]stringValue];
  4.         NSLog(@"\nid --->%@",id);
  5.         //<title>iOS开发指南:从零基础到App Store上架</title>
  6.         NSString * title = [[[element elementsForName:@"title"]lastObject]stringValue];
  7.         NSLog(@"\ntitle --->%@",title);
  8.         
  9.         //<category scheme="http://www.douban.com/2007#kind" term="http://www.douban.com/2007#book"/>
  10.         NSString * scheme = [[[[element elementsForName:@"category"]lastObject]attributeForName:@"scheme"]stringValue];
  11.         NSLog(@"\nscheme --->%@",scheme);
  12.         
  13.         NSString * term = [[[[element elementsForName:@"category"]lastObject]attributeForName:@"term"]stringValue];
  14.         NSLog(@"\nterm --->%@",term);
  15.         /*
  16.         <author>
  17.         <name>关东升</name>
  18.         </author>
  19.          */
  20.         NSString * name = [[[[[element elementsForName:@"author"]lastObject]elementsForName:@"name"]lastObject]stringValue];
  21.         NSLog(@"\nname --->%@",name);
  22.         /*
  23.          <link href="http://api.douban.com/book/subject/24846574" rel="self"/>
  24.          <link href="http://book.douban.com/subject/24846574/" rel="alternate"/>
  25.          <link href="http://img5.douban.com/spic/s26817976.jpg" rel="image"/>
  26.          <link href="http://m.douban.com/book/subject/24846574/" rel="mobile"/>
  27.          获取image的URL,其他的类推
  28.          */
  29.         NSArray * links = [element elementsForName:@"link"];
  30.         for (GdataxMLElement * https in links) {
  31.             GdataxMLNode * node = [https attributeForName:@"rel"];
  32.             if ([[node stringValue] isEqualToString:@"image"]) {
  33.                 GdataxMLNode * imageNOde = [https attributeForName:@"href"];
  34.                 NSString * imageUrl = [imageNOde stringValue];
  35.                 NSLog(@"\nimageUrl ---> %@",imageUrl);
  36.             }
  37.         }
  38.         
  39.         /*
  40.         <db:attribute name="isbn10">7115324441</db:attribute>
  41.         <db:attribute name="isbn13">9787115324443</db:attribute>
  42.         <db:attribute name="author">关东升</db:attribute>
  43.         <db:attribute name="price">99.00</db:attribute>
  44.         <db:attribute name="publisher">人民邮电出版社</db:attribute>
  45.         <db:attribute name="pubdate">2013-7</db:attribute>
  46.          获取出版社,其他的类推
  47.         */
  48.         NSArray * attributeArray = [element elementsForName:@"db:attribute"];
  49.         for (GdataxMLElement * element in attributeArray) {
  50.             if ([[[element attributeForName:@"name"]stringValue] isEqualToString:@"publisher"]) {
  51.                 NSString * publisherName = [element stringValue];
  52.                 NSLog(@"\npublisherName --->%@",publisherName);
  53.             }
  54.         }
  55. }


  56.  
  57.  
  58. 控制台输出结果:

  59. id --->http://api.douban.com/book/subject/21356354
  60. 2014-02-17 15:20:48.970 DoubanDemo2[1678:70b] 
  61. title --->iOS编程
  62. 2014-02-17 15:20:48.971 DoubanDemo2[1678:70b] 
  63. scheme --->http://www.douban.com/2007#kind
  64. 2014-02-17 15:20:48.971 DoubanDemo2[1678:70b] 
  65. term --->http://www.douban.com/2007#book
  66. 2014-02-17 15:20:48.971 DoubanDemo2[1678:70b] 
  67. name --->Aaron Hillegass
  68. 2014-02-17 15:20:48.971 DoubanDemo2[1678:70b] 
  69. imageUrl ---> http://img5.douban.com/spic/s25011757.jpg
  70. 2014-02-17 15:20:48.972 DoubanDemo2[1678:70b] 
  71. publisherName --->华中科技大学出版社
  72. 2014-02-17 15:20:48.972 DoubanDemo2[1678:70b] 
  73. id --->http://api.douban.com/book/subject/24846574
  74. 2014-02-17 15:20:48.972 DoubanDemo2[1678:70b] 
  75. title --->iOS开发指南:从零基础到App Store上架
  76. 2014-02-17 15:20:48.972 DoubanDemo2[1678:70b] 
  77. scheme --->http://www.douban.com/2007#kind
  78. 2014-02-17 15:20:48.972 DoubanDemo2[1678:70b] 
  79. term --->http://www.douban.com/2007#book
  80. 2014-02-17 15:20:48.973 DoubanDemo2[1678:70b] 
  81. name --->关东升
  82. 2014-02-17 15:20:48.973 DoubanDemo2[1678:70b] 
  83. imageUrl ---> http://img5.douban.com/spic/s26817976.jpg
  84. 2014-02-17 15:20:48.973 DoubanDemo2[1678:70b] 
  85. publisherName --->人民邮电出版社
  86. 2014-02-17 15:20:48.973 DoubanDemo2[1678:70b] 
  87. id --->http://api.douban.com/book/subject/6392055
  88. 2014-02-17 15:20:48.974 DoubanDemo2[1678:70b] 
  89. title --->iOS软件开发揭密
  90. 2014-02-17 15:20:48.974 DoubanDemo2[1678:70b] 
  91. scheme --->http://www.douban.com/2007#kind
  92. 2014-02-17 15:20:48.974 DoubanDemo2[1678:70b] 
  93. term --->http://www.douban.com/2007#book
  94. 2014-02-17 15:20:48.975 DoubanDemo2[1678:70b] 
  95. name --->虞斌
  96. 2014-02-17 15:20:48.975 DoubanDemo2[1678:70b] 
  97. imageUrl ---> http://img5.douban.com/spic/s6477176.jpg
  98. 2014-02-17 15:20:48.975 DoubanDemo2[1678:70b] 
  99. publisherName --->电子工业出版社
  100. 2014-02-17 15:20:48.976 DoubanDemo2[1678:70b] 
  101. id --->http://api.douban.com/book/subject/25782512
  102. 2014-02-17 15:20:48.976 DoubanDemo2[1678:70b] 
  103. title --->IOS 7:iPhone/iPad应用开发技术详解
  104. 2014-02-17 15:20:48.976 DoubanDemo2[1678:70b] 
  105. scheme --->http://www.douban.com/2007#kind
  106. 2014-02-17 15:20:48.976 DoubanDemo2[1678:70b] 
  107. term --->http://www.douban.com/2007#book
  108. 2014-02-17 15:20:48.977 DoubanDemo2[1678:70b] 
  109. name --->刘一道
  110. 2014-02-17 15:20:48.977 DoubanDemo2[1678:70b] 
  111. imageUrl ---> http://img3.douban.com/spic/s27163550.jpg
  112. 2014-02-17 15:20:48.977 DoubanDemo2[1678:70b] 
  113. publisherName --->机械工业出版社
  114. 2014-02-17 15:20:48.977 DoubanDemo2[1678:70b] 
  115. id --->http://api.douban.com/book/subject/11610941
  116. 2014-02-17 15:20:48.978 DoubanDemo2[1678:70b] 
  117. title --->iOS 5基础教程
  118. 2014-02-17 15:20:48.978 DoubanDemo2[1678:70b] 
  119. scheme --->http://www.douban.com/2007#kind
  120. 2014-02-17 15:20:48.978 DoubanDemo2[1678:70b] 
  121. term --->http://www.douban.com/2007#book
  122. 2014-02-17 15:20:48.978 DoubanDemo2[1678:70b] 
  123. name --->[美] Jeff LaMarche
  124. 2014-02-17 15:20:48.978 DoubanDemo2[1678:70b] 
  125. imageUrl ---> http://img3.douban.com/spic/s11190761.jpg
  126. 2014-02-17 15:20:48.979 DoubanDemo2[1678:70b] 
  127. publisherName --->人民邮电出版社
  128. 2014-02-17 15:20:48.979 DoubanDemo2[1678:70b] 
  129. id --->http://api.douban.com/book/subject/19962787
  130. 2014-02-17 15:20:48.979 DoubanDemo2[1678:70b] 
  131. title --->Objective-C编程
  132. 2014-02-17 15:20:48.980 DoubanDemo2[1678:70b] 
  133. scheme --->http://www.douban.com/2007#kind
  134. 2014-02-17 15:20:48.980 DoubanDemo2[1678:70b] 
  135. term --->http://www.douban.com/2007#book
  136. 2014-02-17 15:20:48.980 DoubanDemo2[1678:70b] 
  137. name --->[美] Aaron Hillegass
  138. 2014-02-17 15:20:48.980 DoubanDemo2[1678:70b] 
  139. imageUrl ---> http://img3.douban.com/spic/s22704633.jpg
  140. 2014-02-17 15:20:48.981 DoubanDemo2[1678:70b] 
  141. publisherName --->华中科技大学出版社
  142. 2014-02-17 15:20:48.981 DoubanDemo2[1678:70b] 
  143. id --->http://api.douban.com/book/subject/19967897
  144. 2014-02-17 15:20:48.981 DoubanDemo2[1678:70b] 
  145. title --->Objective-C 程序设计
  146. 2014-02-17 15:20:48.982 DoubanDemo2[1678:70b] 
  147. scheme --->http://www.douban.com/2007#kind
  148. 2014-02-17 15:20:48.982 DoubanDemo2[1678:70b] 
  149. term --->http://www.douban.com/2007#book
  150. 2014-02-17 15:20:48.982 DoubanDemo2[1678:70b] 
  151. name --->斯蒂芬·G·科昌
  152. 2014-02-17 15:20:48.982 DoubanDemo2[1678:70b] 
  153. imageUrl ---> http://img3.douban.com/spic/s22783480.jpg
  154. 2014-02-17 15:20:48.982 DoubanDemo2[1678:70b] 
  155. publisherName --->电子工业出版社
  156. 2014-02-17 15:20:48.982 DoubanDemo2[1678:70b] 
  157. id --->http://api.douban.com/book/subject/6920082
  158. 2014-02-17 15:20:48.983 DoubanDemo2[1678:70b] 
  159. title --->Objective-C编程之道
  160. 2014-02-17 15:20:48.983 DoubanDemo2[1678:70b] 
  161. scheme --->http://www.douban.com/2007#kind
  162. 2014-02-17 15:20:48.983 DoubanDemo2[1678:70b] 
  163. term --->http://www.douban.com/2007#book
  164. 2014-02-17 15:20:48.983 DoubanDemo2[1678:70b] 
  165. name --->钟冠贤
  166. 2014-02-17 15:20:48.983 DoubanDemo2[1678:70b] 
  167. imageUrl ---> http://img3.douban.com/spic/s8855033.jpg
  168. 2014-02-17 15:20:48.983 DoubanDemo2[1678:70b] 
  169. publisherName --->人民邮电
  170. 2014-02-17 15:20:48.984 DoubanDemo2[1678:70b] 
  171. id --->http://api.douban.com/book/subject/3948373
  172. 2014-02-17 15:20:48.984 DoubanDemo2[1678:70b] 
  173. title --->Objective-C 2.0程序设计
  174. 2014-02-17 15:20:48.984 DoubanDemo2[1678:70b] 
  175. scheme --->http://www.douban.com/2007#kind
  176. 2014-02-17 15:20:48.984 DoubanDemo2[1678:70b] 
  177. term --->http://www.douban.com/2007#book
  178. 2014-02-17 15:20:48.984 DoubanDemo2[1678:70b] 
  179. name --->Stephen G. Kochan
  180. 2014-02-17 15:20:48.984 DoubanDemo2[1678:70b] 
  181. imageUrl ---> http://img3.douban.com/spic/s3957362.jpg
  182. 2014-02-17 15:20:48.985 DoubanDemo2[1678:70b] 
  183. publisherName --->机械工业出版社
  184. 2014-02-17 15:20:48.985 DoubanDemo2[1678:70b] 
  185. id --->http://api.douban.com/book/subject/3604295
  186. 2014-02-17 15:20:48.985 DoubanDemo2[1678:70b] 
  187. title --->iPhone开发基础教程
  188. 2014-02-17 15:20:48.985 DoubanDemo2[1678:70b] 
  189. scheme --->http://www.douban.com/2007#kind
  190. 2014-02-17 15:20:48.985 DoubanDemo2[1678:70b] 
  191. term --->http://www.douban.com/2007#book
  192. 2014-02-17 15:20:48.985 DoubanDemo2[1678:70b] 
  193. name --->Jeff LaMarche
  194. 2014-02-17 15:20:48.986 DoubanDemo2[1678:70b] 
  195. imageUrl ---> http://img5.douban.com/spic/s3664046.jpg
  196. 2014-02-17 15:20:48.986 DoubanDemo2[1678:70b] 
  197. publisherName --->人民邮电出版社
  198.  
  199.  
  200.  
  201.  
  202.  
  203.  

猜你在找的XML相关文章