美文网首页
XML解析及GData库使用

XML解析及GData库使用

作者: 可惜你不是我的双子座 | 来源:发表于2018-05-13 23:39 被阅读16次

一、背景

前些日子,由于项目中需要接入其他平台的界面,其中在返回数据中是把json数据包裹在xml中,这时需要我们先解析xml才能看到json格式数据,因此记录一下xml的解析方式。

二、XML与JSON的优缺点

1.XML

优点:可读性强,扩展性强。
缺点:冗余的数据多,传输比较慢。

2.JSON

优点:轻巧,传输速率高,冗余的数据少。
缺点:可读性差些。

三、GData使用注意

解析xml经常使用库:GData。使用之前,需要注意几点。
1. 添加GData库;
2.build settings 查找 Header Search Paths , 在 Header Search Paths 添加上路径:/usr/include/libxml2

添加路径.png
3.build settings 查找 Other Linker Flags , 在 Other Linker Flags 添加上参数:-lxml2
添加参数.png
4.build phase 展开 compile source, 选择 GDataXMLNode.m 文件添加上 -fno-objc-arc
添加参数.png

四、解析XML

第一种解析方法

解析数据.png
1.加载数据到GDataXMLDocument对象中
GDataXMLDocument *doc = [[GDataXMLDocument alloc] initWithData:data encoding:0 error:nil];

2.获取根节点

GDataXMLElement *root = doc.rootElement;

3.数组包含了两个叫User的节点

NSArray *arrUser = [root elementsForName:@"User"];

4.遍历所有值

for (GDataXMLElement *element in arrUser) {
            
            NSArray *arrName = [element elementsForName:@"name"];
            //只有一个name节点,所有第0个元素就是要找的节点
            GDataXMLElement *name = arrName[0];
            
            NSArray *firstName = [name elementsForName:@"firstName"];
            GDataXMLElement *first = firstName[0];
            
            NSArray *lastName = [name elementsForName:@"lastName"];
            GDataXMLElement *last = lastName[0];
            
            //获取name的节点值;
            NSString *namet = [NSString stringWithFormat:@"%@%@",first.stringValue,last.stringValue];
            
            NSArray *arrAge = [element elementsForName:@"age"];
            GDataXMLElement *age = arrAge[0];
            NSString *ageStr = age.stringValue;
            
            //获取属性值:GDataXMLNode
            //id 是属于name的属性;获取属性值要通过name;
            GDataXMLNode *idNode = [name attributeForName:@"id"];
            NSString *idStr = idNode.stringValue;
            
            NSLog(@"id=%@,name=%@,age=%@",idStr,namet,ageStr);
        }

5.解析结果

解析结果.png
第二种解析方法 -- Xpath路径语法
解析数据.png
1.加载数据到GDataXMLDocument对象中
GDataXMLDocument *doc = [[GDataXMLDocument alloc] initWithData:data encoding:0 error:nil];

2.根据路径找到解析数组

NSArray *arrList = [doc nodesForXPath:@"/root/category/list/list/list" error:nil];

3.遍历所有值

for (GDataXMLElement *element in arrList) {
            
            GDataXMLNode *dname = [element attributeForName:@"dname"];
            NSLog(@"%@",dname.stringValue);
        }

4.解析结果


解析结果.png

有兴趣的可以自己尝试

数据连接

相关文章

  • XML解析及GData库使用

    一、背景 前些日子,由于项目中需要接入其他平台的界面,其中在返回数据中是把json数据包裹在xml中,这时需要我们...

  • XML、JSON解析

    XML解析 XML_GData解析 JSON解析

  • XML解析方式及GData框架使用

    一、概念 1、XML概念:Extensible Markup Language(可扩展标记语言)HTML (超文本...

  • lxml库与Xpath语法

    lxml库使用Xpath语法解析定位网页数据。 lxml库的使用 (1)修正HTML代码 lxml为XML解析库,...

  • XML*

    目录 XML简介 XML基本语法 XML解析 * DOM解析   * DOM解析原理及工具   * DOM4J解析...

  • XML及使用java解析XML

    XML即Extensible Markup Language,可扩展标记语言,主要的应用有三方面: 1.存储数据,...

  • Ch5 Lxml库与Xpath语法

    概要 Lxml库是基于libxml2的XML解析库的Python封装。该模块使用C语言编写,解析速度比Beauti...

  • Python爬虫——Beautiful Soup

    Beautiful Soup Beautiful Soup是Python处理HTML或XML的解析库,使用Beau...

  • 6. BeautifulSoup 解析库

    BeautifulSoup 解析库 BeautifulSoup 解析库根据HTML和XML语法建立解析树,进而高效...

  • Android15-XML和JSON解析

    1. XML解析的两种方式 服务器返回的XML数据如下 1.1使用Pull方式解析XML数据 使用Pull解析,首...

网友评论

      本文标题:XML解析及GData库使用

      本文链接:https://www.haomeiwen.com/subject/twdldftx.html