GDataXML是一套Google使用Objective-C开发的DOM方式XML解析类库,支持读取和修改XML文档,支持XPath方式查询, GDataXML 是 iOS 下的一款轻量级 XML 解析器。它与C#的XmlDocument类似。

一、GData配置

1.将类引入项目中,添加libxml2.dylib

2.在Build Phases的Compile Sources中找到GDataXMLNode.m添加-fno-objc-arc

3.进入Build Settings,搜索Header Search Paths,添加路径/usr/include/libxml2

4.再搜索Other Linker Flags,添加新flag: -lxml2

二、GData的使用

1.引入GDataXMLNode.h

2.第三方中有好几个方法,这里可能没有列举全面 ,方法都差不多,可以查一下基本可以

3.对于Xpath,它是XML的查询方法,在.Net、IOS中是一样的,具体可以查询http://www.w3school.com.cn/xpath/index.asp

//
//  ViewController.m
//  GDataXml
//
//  Created by City--Online on 15/4/29.
//  Copyright (c) 2015年 CYW. All rights reserved.
//

#import "ViewController.h"
#import "GDataXMLNode.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    NSString *path=[[NSBundle mainBundle] pathForResource:@"user" ofType:@"xml"];
    NSString *content=[NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];
//    GData比较简单,理清GDataXMLDocument、GDataXMLElement、GDataXMLNode三者的关系这样更容易理解
//    1.GDataXMLElement继承GDataXMLNode,GDataXMLElement可以作为GDataXMLNode,所以GDataXMLNode.h中返回的数组都是GDataXMLNode类型的数组
//    2.<></>表示一个GDataXMLElement
//    3.<>里的每一个属性为一个GDataXMLNode

//    实例化GDataXMLDocument
    GDataXMLDocument *document=[[GDataXMLDocument alloc]initWithXMLString:content options:0 error:nil];
//    获得根元素
    GDataXMLElement *rootElement=document.rootElement;

    NSArray *users=[rootElement elementsForName:@"User"];
    //   users作为 GDataXMLNode数组
    for (GDataXMLNode *userNode in users) {
        NSArray *arr=[userNode children];
        for (GDataXMLElement *e  in arr) {
            NSLog(@"%@",e);
        }
    }
//   users作为 GDataXMLElement数组
    for (GDataXMLElement *user in users) {
        GDataXMLNode *userIdNode=[user attributeForName:@"id"];
        NSLog(@"userId=%@",userIdNode.stringValue);

        for (GDataXMLElement *element in user.children) {
            if ([element.name isEqualToString:@"name"]) {
                NSLog(@"name=%@",element.stringValue);
                GDataXMLNode *idnode=[element attributeForName:@"id"];
                NSLog(@"id=%@",idnode.stringValue);
            }
            else
            {
                NSLog(@"Age=%@\n\n",element.stringValue);
            }

        }
    }
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end

网络之XML解析-GData的更多相关文章

  1. iOS -数据库网络之xml解析之远程解析XML

    1.IOS中XML文件获取    //设置远程访问地址     NSURL *url=[NSURL URLWithString:@""];       //创建动态URL请求,并初 ...

  2. iOS -数据库网络之xml解析

    XML文件有2种解析方式 1.基于文档(document) 2.基于事件(sax)   1.IOS中XML文件获取   首先要将XML导入工程中 在ViewController的按钮事件中,代码如下: ...

  3. iOS -数据库网络之xml解析之第三方解析XML

    1.导入第三方插件(GDalaXMLNode)   2.第三方插件配置   libxml/tree.h 路径   在项目属性中--Bulid Settings中搜索 Search   --Search ...

  4. 网络之XML解析-原生

    Json和XML都属于字符串,用于跨平台,前面总结了下Json,下面看下XML. XML定义这些百度比我说的清,不再啰嗦,直接代码,我喜欢把东西都放进注释. 一.首先看下要解析的XML内容 <? ...

  5. Gdata XML解析配置和简单使用

    导入libxml2,使用第三方AFNetworking网络请求,第三方XML解析GData GData需要的配置 Build Settings 里搜索,添加如下

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

    简单介绍使用废话少说直接上图就能看明白... 导入libxml2,使用第三方AFNetworking网络请求,第三方XML解析GData GData需要的配置 Build Settings 里搜索,添 ...

  7. Android网络之数据解析----SAX方式解析XML数据

    ​[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/ ...

  8. 网络数据的XML解析

    网络应用中的数据解析,因为最近的应用,无论是Android的和ios平台的,一直用也是建议用的都是Json解析, xml解析都有点被遗忘了. 然后最近自己在做着玩一个ios的小应用,涉及网络数据的抓取 ...

  9. [iOS 多线程 & 网络 - 2.3] - 解析xml

    A.XML基本知识 1.xml概念 什么是XML全称是Extensible Markup Language,译作“可扩展标记语言”跟JSON一样,也是常用的一种用于交互的数据格式一般也叫XML文档(X ...

随机推荐

  1. AngularJS 路由及SPA理解

    一.路由及SPA理解 路由允许我们通过不同的 URL 访问不同的内容,可实现多视图的单页web应用(SPA);通常我们的URL形式为 http://runoob.com/first/page,但在单页 ...

  2. Android-Java单例模式

    今天我们来说说一个非常常用的模式,单例模式,单例模式让某个类中有自己的实例,而且只实例化一次,避免重复实例化,单例模式让某个类提供了全局唯一访问点,如果某个类被其他对象频繁使用,就可以考虑单例模式,以 ...

  3. Ubuntu16.04安装NVIDIA显卡驱动

    1.下载官方驱动程序 http://www.geforce.cn/drivers 如果我们直接安装驱动的话,往往会报错:ERROR: The Nouveau kernel driver is curr ...

  4. 代码面试集锦 1 - Uber

    Given an array of integers, return a new array such that each element at index i of the new array is ...

  5. Word 如何实现表格快速一分为二

    将光标定位在分断处,按快捷键“Ctrl+Shift+Enter“

  6. Windows远程桌面连接ubuntu 16

    一.安装Xrdp Windows远程桌面使用的是RDP协议,所以ubuntu上就要先安装Xrdp,在ubuntu软件中心搜索xrdp安装. 安装xrdp的同时会自动安装vnc4server,xbase ...

  7. [WC2005]双面棋盘(线段树+并查集)

    线段树+并查集维护连通性. 好像 \(700ms\) 的时限把我的常数超级大的做法卡掉了, 必须要开 \(O_2\) 才行. 对于线段树的每一个结点都开左边的并查集,右边的并查集,然后合并. \(Co ...

  8. Atom 清空残余数据

    rm -rf ~/.atom rm /usr/local/bin/atom rm /usr/local/bin/apm rm ~/Library/Preferences/com.github.atom ...

  9. Codeforces gym101612 L.Little Difference(枚举+二分)

    传送:http://codeforces.com/gym/101612 题意:给定一个数n(<=1e18),将n分解为若干个数的成绩.要求这些数两两之间的差值不能大于1. 分析: 若n==2^k ...

  10. Java并发编程总结5——ThreadPoolExecutor

    一.ThreadPoolExecutor介绍 在jdk1.8中,构造函数有4个.以 ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, ...