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. Android-Kotlin-set/get方法的使用

    Student.kt package cn.kotlin.kotlin_oop04 open class Person { open var personName:String = "我是父 ...

  2. kotlin面向对象-笔记

  3. maven-java包管理工具-01

    maven只用来管理java项目,也是用java开发的 传统的项目因为包的管理有很多问题,所以才有的maven的诞生: 1. 项目开始的时候,确定项目中可能要使用到的包,然后下载包,复制粘贴到项目里面 ...

  4. ElectronNetTest

    系统环境:Ubuntu 18.04.2 Desktop 软件环境:asp.net core 2.2,Node.js(version>8.6) Github上有人说不支持 asp.net core ...

  5. 【转】C#如何创建泛型类T的实例

    原文地址:https://www.cnblogs.com/lxhbky/p/6020612.html 最近在学历基类的写法时,遇到了一个问题:如何怎么创建一个泛型类T的实例呢?     废话不多说了, ...

  6. DOM LEVEL 1 中的那些事儿[总结篇-上]

    DOM是前端编程中一个非常重要的部分,我们在动态修改页面的样式.内容.添加页面动画以及为页面元素绑定事件时,本质都是在操作DOM.DOM并不是JS语言的一个部分,我们通过JAVA.PHP等语言抓取网页 ...

  7. 冰与火之歌居然是在 DOS 系统上写出来的

    简评:<权力的游戏>第八季(最终季)终于开播了!这部美剧的原著小说有一个很有趣的冷知识 -- 它是在运行 DOS 系统的计算机上写出来的.其实不少老粉都已经知道这个典故,不过听到老爷子的亲 ...

  8. VS2013 编辑器

    1. VS -> 本地Git -> Github 1. 右键单击解决方案,选择“将解决方案添加到源代码管理器”,选择Git 2. 切换到团队资源管理器([菜单]视图->团队资源管理器 ...

  9. POJ 2487

    #include<iostream> #include<stdio.h> using namespace std; int compare(void const * i,voi ...

  10. python2 里边自定义线程池

    #!/usr/bin/env python # -*- coding:utf-8 -*- import Queue import threading class ThreadPool(object): ...