加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

【iOS开发】XML解析--GData语法

发布时间:2020-12-16 05:58:32 所属栏目:百科 来源:网络整理
导读:GData旨在解析XML文档。 什么是 XML? XML 指可扩展标记语言( EX tensible M arkup L anguage) XML 是一种 标记语言 ,很类似 HTML XML 的设计宗旨是 传输数据 ,而非显示数据 XML 标签没有被预定义。您需要 自行定义标签 。 XML 被设计为具有 自我描述性

GData旨在解析XML文档。

什么是 XML?

  • XML 指可扩展标记语言(EXtensibleMarkupLanguage)
  • XML 是一种标记语言,很类似 HTML
  • XML 的设计宗旨是传输数据,而非显示数据
  • XML 标签没有被预定义。您需要自行定义标签
  • XML 被设计为具有自我描述性
  • XML 是W3C 的推荐标准
GData配置

(1)添加头文件搜索路径

Header Search Paths>/usr/include/libxml2

(2)添加二进制库

Link library -> libxml2.dylib

(3)源文件添加编译选项

-fno-objc-arc

(4)添加头文件

#import “GDataXMLNode.h"

语法:

- (void)viewDidLoad

{

[super viewDidLoad];

// Do any additional setup after loading the view,typically from a nib.

//配置XML库(配置完才能使用)

//(1)添加头文件搜索路径

// Header Search Paths-> /usr/include/libxml2

//(2)添加二进制库

// Link library -> lixml2.dylib

//(3)源文件添加编译选项

// -fno-objc-arc

//(4)添加头文件

// #import "GDataXMLNode.h"

//如何使用GData开源库解析XML文件

//重点: 如何读取其中的数据

//获取文件路径

NSString *file = [[NSBundle mainBundle] pathForResource:@"xml.txt" ofType:nil];

NSData *data = [[NSData alloc] initWithContentsOfFile:file];

//<1>解析XML文件

//GData中把一个XML当做一个文档Document

//注意: 这一句已经完成了解析的过程

GDataXMLDocument *doc = [[GDataXMLDocument alloc] initWithData:data options:0 error:nil];

if(doc == nil)

{

NSLog(@"解析失败!");

return;

}

//<2>如何获取XML的数据?

//实例:

// 获取CityName结点的名字和其中的值

// XPath语法: 快速获取某个结点

//位置: /root/systemConfig/CityName

NSArray *array = [doc nodesForXPath:@"/root/systemConfig/CityName" error:nil];

//取出其中的结点

GDataXMLElement *element = [array firstObject];

//<CityName>北京</CityName>

//获取节点名

NSLog(@"name = %@",element.name);

NSLog(@"value = %@",element.stringValue);

//<3>如何获取结点的属性

//实例: 拿到ComeChannel中两个Item的所有属性

array = [doc nodesForXPath:@"/root/systemConfig/ComeChannel/Item" error:nil];

NSLog(@"count = %ld",array.count);

GDataXMLElement *item1 = array[0];

//获取属性

//注意: 一个结点可以有多个属性

// 一个结点所有属性存储attributes中

for(GDataXMLElement *attr in item1.attributes)

{

//显示属性名和属性值

NSLog(@"attr name: %@,value: %@",attr.name,attr.stringValue);

}

//<4>获取所有的Item结点(不管item在哪儿)

// 语法//Item表示获取所有Item结点

array = [doc nodesForXPath:@"//Item" error:nil];

NSLog(@"item count=%ld",array.count);

for (GDataXMLElement *element in array) {

NSLog(@"item-> %@",element.name);

}

//<5>获取所有名字为value的属性(而不管这个属性在哪儿)

array = [doc nodesForXPath:@"//@value" error:nil];

for (GDataXMLElement *element in array) {

NSLog(@"value-> %@",element.stringValue);

}

//<6>XML的遍历

//获取根结点

GDataXMLElement *root = doc.rootElement;

NSLog(@"rootName: %@",root.name);

//获取结点的子节点个数

long count = root.childCount;

//实例: 获取root的子结点

array = root.children;

//通过子节点的名字获取子结点

array = [root elementsForName:@"systemConfig"];

}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读