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

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"];

}

相关文章

php输出xml格式字符串
J2ME Mobile 3D入门教程系列文章之一
XML轻松学习手册
XML入门的常见问题(一)
XML入门的常见问题(三)
XML轻松学习手册(2)XML概念