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

OC---xml解析实例

发布时间:2020-12-16 05:53:42 所属栏目:百科 来源:网络整理
导读:// 使用 GDdata 去做 xml 解析 ; //1. 导入第三方库 GData; //Gdata 是基于系统的 libzml2 库去实现 xml 的解析; libxml2 // 默认没有被导入工程中,需要手动导入 //具体步骤参见上一条博客 #import Foundation/Foundation.h #import "GDataXMLNode.h" #def


//使用GDdata去做xml解析;

//1.导入第三方库GData;

//Gdata是基于系统的libzml2库去实现xml的解析;libxml2

//默认没有被导入工程中,需要手动导入

//具体步骤参见上一条博客

#import <Foundation/Foundation.h>

#import "GDataXMLNode.h"

#define path @"http://yuting.local/shareX/xml2.xml"

int main(int argc,const char * argv[]) {

@autoreleasepool {

//1.拿到需要解析的数据

NSURL *url = [NSURL URLWithString:path];

NSData *data = [NSData dataWithContentsOfURL:url];

// NSString * str = [[NSString alloc]initWithData:data

// encoding:NSUTF8StringEncoding];

// NSLog(@"%@",str);

//2.开始解析数据

//a.xml数据转换成树;

GDataXMLDocument * document = [[GDataXMLDocument alloc]

initWithData:data options:0 error:nil];

//b.获取根节点;

GDataXMLElement *rootElement = [document rootElement];

//===================使用xpath快速获取节点(前提:先获取根节点)=================

GDataXMLElement *element = [rootElement

nodesForXPath:@"books/book[1]/name" error:nil][0];

NSString *name2 = element.stringValue;

NSLog(@"===%@===",name2);

//===================逐个遍历节点知道获取需要的节点===========

//c.根据节点名字获取子节点,返回值为数组,因为一个节点下可能有多个子节点

//c.获取books节点

GDataXMLElement *booksElement = [rootElement

elementsForName:@"books"][0];

//d.获取第一个book节点;

GDataXMLElement *bookElement = [booksElement

elementsForName:@"book"][0];

//e.获取名字节点;

GDataXMLElement *nameElement = [bookElement

elementsForName:@"name"][0];

//f.获取name节点中的内容:

NSString *name = nameElement.stringValue;

NSLog(@"%@",name);

//获取所有的book节点;

//数组中的数组元素全是节点;

NSArray *bookArray = [booksElement elementsForName:@"book"];

for (GDataXMLElement *tBookElement in bookArray) {

//获取book节点的属性

NSString * ID = [tBookElement

attributeForName:@"id"].stringValue;

NSString *language = [tBookElement

attributeForName:@"language"].stringValue;

NSLog(@"id:%@ lg:%@",ID,language);

}

}

return 0;

}

(编辑:李大同)

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

    推荐文章
      热点阅读