4_2网络学习第二天--XML解析

1、XML的数据:

<?xml version="1.0" encoding="utf-8" ?> (表示XML文件版本)

<CityName>北京</CityName> (一个节点,CityName是结点名,北京结点值)

<Item key="1" value="A"></Item>  (key="1"是结点属性,key属性名,“1”属性值)

注意:XML是层次嵌套的结构

2、解析XML:

//开始加载数据
-(void)startDownloadData
{
    NSString *urlSring=[NSString stringWithFormat:MAIN_SHOP_URL,_city,_category,_offset,_pageSize];

    _request=[[LCHttpRequest alloc]init];

    [_request requestUrl:urlSring target:self action:@selector(dealDownloadFinish:)];

}
//加载完成后,解析和处理数据
-(void)dealDownloadFinish:(LCHttpRequest *)request
{
    //解析XML -利用第三方开源库 GDataXMLDocument
    GDataXMLDocument *doc=[[GDataXMLDocument alloc]initWithData:request.data options:0 error:nil];
    NSArray *list=[doc nodesForXPath:@"//promotion" error:nil];
    //利用CDataXMLElement获取
    for (GDataXMLElement * promotion in list) {

        PromotionModel *model=[[PromotionModel alloc]initWithGDataXMLElement:promotion];

        [_allData addObject:model];
    }
}

#import "PromotionModel.h"

@implementation PromotionModel
//封住数据模型-利用获得的GDataXMLElement
-(id)initWithGDataXMLElement:(GDataXMLElement *)element
{
    if (self=[super init]) {
        self.name=[[element elementsForName:@"name"][0] stringValue];
        self.id=[[element elementsForName:@"id"][0] stringValue];
        self.surl=[[element elementsForName:@"surl"][0] stringValue];
        self.wsdimg=[[element elementsForName:@"wsdimg"][0] stringValue];
        self.durl=[[element elementsForName:@"durl"][0] stringValue];
        self.multipagetitle=[[element elementsForName:@"multipagetitle"][0] stringValue];
        self.price=[[element elementsForName:@"price"][0] stringValue];
        self.priceoff=[[element elementsForName:@"priceoff"][0] stringValue];
        self.currentdealcount=[[element elementsForName:@"currentdealcount"][0] stringValue];
        self.starttime=[[element elementsForName:@"starttime"][0] stringValue];
        self.endtime=[[element elementsForName:@"endtime"][0] stringValue];
        self.sevenrefundallowed=[[element elementsForName:@"sevenrefundallowed"][0] stringValue];
        self.expirerefundallowed=[[element elementsForName:@"expirerefundallowed"][0] stringValue];
        self.district=[[element elementsForName:@"district"][0] stringValue];

        self.type2=[[element elementsForName:@"type2"][0] stringValue];
        self.hassub=[[element elementsForName:@"hassub"][0] stringValue];
        self.flag=[[element elementsForName:@"flag"][0] stringValue];

    }
    return self;
}

3、上拉刷新、下拉加载

利用第三方开源库是方便的:例如AH3DPullRefresh:

#pragma mark - 上拉刷新,下拉加载更多
-(void)addPullRefreahAndPullLoadMore
{

    [_tableView setPullToRefreshHandler:^{
        //从第一行数据开始下载
        _offset=1;
        [self startDownloadData];
    }];

    [_tableView setPullToLoadMoreHandler:^{
        _offset+=_pageSize;
        [self startDownloadData];
    }];
}

//上拉或者下拉会调用下面方法
//开始加载数据
-(void)startDownloadData
{
    NSString *urlSring=[NSString stringWithFormat:MAIN_SHOP_URL,_city,_category,_offset,_pageSize];

    _request=[[LCHttpRequest alloc]init];

    [_request requestUrl:urlSring target:self action:@selector(dealDownloadFinish:)];

}
//加载完成后,解析和处理数据
-(void)dealDownloadFinish:(LCHttpRequest *)request
{//解析XML
    GDataXMLDocument *doc=[[GDataXMLDocument alloc]initWithData:request.data options:0 error:nil];
    NSArray *list=[doc nodesForXPath:@"//promotion" error:nil];

    if (_offset==1) {
        NSLog(@"正在刷新数据");
        [_allData removeAllObjects];
    }

    for (GDataXMLElement * promotion in list) {

        PromotionModel *model=[[PromotionModel alloc]initWithGDataXMLElement:promotion];

        [_allData addObject:model];
    }

    //结束刷新
    [_tableView refreshFinished];
    //结束加载更多
    [_tableView loadMoreFinished];

    [_tableView reloadData];
}

4、多使用第三方开源库实现:

时间: 2024-10-05 15:22:46

4_2网络学习第二天--XML解析的相关文章

javaweb学习总结十(xml解析&lt;JAXP以及DOM方式&gt;)

一:XML解析技术 一般我们使用sun公司或者开源组织开发的工具包解析xml效率比较高. 1:jaxp解析xml,jaxp是sun公司开发的解析xml工具包 2:jaxp解析xml代码如下 a:获取document文档树对象 1 @Test 2 // 获取document对象 3 public void test1() throws Exception { 4 // 1:获取解析工厂对象 5 DocumentBuilderFactory factory = DocumentBuilderFact

javaweb学习总结九(xml解析以及调整JVM内存大小)

一:解析XML文件的两种方式 1:dom,document object model,文档对象模型. 2:sax,simple API for XML. 3:比较dom和sax解析XML文件的优缺点 a:dom 优点:dom解析方式会把xml文件加载到内存中,按照xml的结构解析成dom树,元素.文本.属性都会解析成对象,方便进行增删改查. 缺点:如果xml文件比较大,加载文件内存压力大. b:sax 优点:sax解析方式是一行一行的读取xml文件,所以不会造成内存压力. 缺点:不能进行增删改的

maven学习7 settings.xml解析

maven的配置文件settings.xml存在于两个地方: 1.安装的地方:${M2_HOME}/conf/settings.xml 2.用户的目录:${user.home}/.m2/settings.xml 前者又被叫做全局配置,对操作系统的所有使用者生效:后者被称为用户配置,只对当前操作系统的使用者生效.如果两者都存在,它们的内容将被合并,并且用户范围的settings.xml会覆盖全局的settings.xml. Maven安装后,用户目录下不会自动生成settings.xml,只有全局

学习C++版XML解析器tinyxml2

tinyxml2是一个非常好用的C++编写的XML文件解析和生成器,其项目地址为:https://github.com/leethomason/tinyxml2 下面给出常用的API: 主要API: XMLDocument:XML文档类 RootElement():XML文档的root元素 XMLElement:XML元素对象 FirstChildElement():第一个子节点 NextSiblingElement():下一个兄弟节点 XMLAttribute:XML节点属性类 FirstAt

XML 解析 连接超时

本文转载自: http://blog.csdn.net/chjttony/article/details/7720873 说在前面 读取XML的时候,很多人总是不明白为什么会连接超时,XML解析怎么还会访问网络,其实在XML解析之前,如果XML指定了DTD文件,那么Java会根据DTD文件的路径去本地寻找或远程下载,下载的时候就会出现连接超时!所以想要避免连接超时这个问题,就可以采用避免DTD下载,下面通过两种方式避免DTD下载,本人亲测,确实是一篇好文章,谢谢作者! 下面是正文: Java程序

iOS-Gdata XML解析配置和简单使用

简单介绍使用废话少说直接上图就能看明白... 导入libxml2,使用第三方AFNetworking网络请求,第三方XML解析GData GData需要的配置 Build Settings 里搜索,添加如下 如果是ARC ,需要加上 -fno-objc-arc 首先找一个xml网址使用AFNetworking请求得到NSData数据 先打开火狐浏览器看xml的层次结构(复制网址在火狐浏览器上打开) 使用GData解析,记住一层一层解析

ios网络学习------7 xml格式数据的请求处理

用NSXMLParser解析XML文件过程: 1 创建NSXMLParser实例,并传入从服务器接收XML数据. 2 定义解析器代理 3 解析器解析. 4 通过解析代理方法完成XML数据的解析. #pragma mark 加载xml - (void)loadXML { //获取网络数据. NSLog(@"load xml"); //从web服务器加载数据 NSString *str = @"http://www.baidu.com?format=xml"; //这里

爬虫学习 05.Python网络爬虫之三种数据解析方式

爬虫学习 05.Python网络爬虫之三种数据解析方式 引入 回顾requests实现数据爬取的流程 指定url 基于requests模块发起请求 获取响应对象中的数据 进行持久化存储 其实,在上述流程中还需要较为重要的一步,就是在持久化存储之前需要进行指定数据解析.因为大多数情况下的需求,我们都会指定去使用聚焦爬虫,也就是爬取页面中指定部分的数据值,而不是整个页面的数据.因此,本次课程中会给大家详细介绍讲解三种聚焦爬虫中的数据解析方式.至此,我们的数据爬取的流程可以修改为: 指定url 基于r

ios网络学习------8 xml格式数据的请求处理 用代码块封装

#pragma mark 加载xml - (void)loadXML { //获取网络数据. NSLog(@"load xml"); //从web服务器加载数据 NSString *str = @"http://www.baidu.com?format=xml"; //这里是乱写的 //1简历NSURL NSURL *url = [NSURL URLWithString:str]; //2建立NSURLRequest NSURLRequest *request =