GData解析XML文件
发布时间:2020-12-15 23:03:40 所属栏目:百科 来源:网络整理
导读:如何将GData库引入自己的工程,我就不说了,这个网上一大堆。下面直接讲如何解析XML文件 以http://api.douban.com/book/subjects?q=ios这个从豆瓣上请求的图书为例,下面是请求的内容 feed xmlns =" http://www.w3.org/2005/Atom " xmlns:db =" http://www.d
如何将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>
...
</entry>
<entry>
...
</entry>
<entry>
...
</entry>
<entry>
...
</entry>
<entry>
...
</entry>
<entry>
...
</entry>
<entry>
...
</entry>
<entry>
...
</entry>
<entry>
...
</entry>
<opensearch:itemsPerPage>
10
</opensearch:itemsPerPage>
</feed>
上面红色字体是一本书所包含的全部信息,每本书都含有相同的内容,下面解析红色字体的全部内容 假设你已经使用ASIHttpRequest或者NSURLConnection或者其他的下载类讲这个XML文件的数据全部下载下来,并保存到(NSMutableData*)data中。 下面创建GDataXMLDocument类 NSError *error; GDataXMLDocument *doc=[[GDataXMLDocument alloc] initWithData:data options:0 error:&error]; if (!doc) { return; } 下面获取所有的entry节点,这个有两种方法: 1、 GDataXMLElement * rootElement = [ doc rootElement]; NSArray * arrays = [ rootElement elementsForName:@"entry"]; 2、 NSDictionary *dict=[NSDictionary dictionaryWithObjectsAndKeys:@"http://www.w3.org/2005/Atom",@"xmlns",nil]; NSArray *arrays=[doc nodesForXPath:@"/xmlns:feed/xmlns:entry" namespaces:dict error:&error]; 获取entry节点下所有节点的信息 for (GDataXMLElement *element in array) { //<id>http://api.douban.com/book/subject/24846574</id> NSString * id = [[[ element elementsForName:@"id"]lastObject]stringValue]; NSLog(@"nid --->%@",id); //<title>iOS开发指南:从零基础到App Store上架</title> NSString * title = [[[element elementsForName:@"title"]lastObject]stringValue]; NSLog(@"ntitle --->%@",title); //<category scheme="http://www.douban.com/2007#kind" term="http://www.douban.com/2007#book"/> NSString * scheme = [[[[element elementsForName:@"category"]lastObject]attributeForName:@"scheme"]stringValue]; NSLog(@"nscheme --->%@",scheme); NSString * term = [[[[element elementsForName:@"category"]lastObject]attributeForName:@"term"]stringValue]; NSLog(@"nterm --->%@",term); /* <author> <name>关东升</name> </author> */ NSString * name = [[[[[element elementsForName:@"author"]lastObject]elementsForName:@"name"]lastObject]stringValue]; NSLog(@"nname --->%@",name); /* <link href="http://api.douban.com/book/subject/24846574" rel="self"/> <link href="http://book.douban.com/subject/24846574/" rel="alternate"/> <link href="http://img5.douban.com/spic/s26817976.jpg" rel="image"/> <link href="http://m.douban.com/book/subject/24846574/" rel="mobile"/> 获取image的URL,其他的类推 */ NSArray * links = [element elementsForName:@"link"]; for (GDataXMLElement * https in links) { GDataXMLNode * node = [https attributeForName:@"rel"]; if ([[node stringValue] isEqualToString:@"image"]) { GDataXMLNode * imageNOde = [https attributeForName:@"href"]; NSString * imageUrl = [imageNOde stringValue]; NSLog(@"nimageUrl ---> %@",imageUrl); } } /* <db:attribute name="isbn10">7115324441</db:attribute> <db:attribute name="isbn13">9787115324443</db:attribute> <db:attribute name="author">关东升</db:attribute> <db:attribute name="price">99.00</db:attribute> <db:attribute name="publisher">人民邮电出版社</db:attribute> <db:attribute name="pubdate">2013-7</db:attribute> 获取出版社,其他的类推 */ NSArray * attributeArray = [element elementsForName:@"db:attribute"]; for (GDataXMLElement * element in attributeArray) { if ([[[element attributeForName:@"name"]stringValue] isEqualToString:@"publisher"]) { NSString * publisherName = [element stringValue]; NSLog(@"npublisherName --->%@",publisherName); } } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |