博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS开发之XML解析
阅读量:6341 次
发布时间:2019-06-22

本文共 2585 字,大约阅读时间需要 8 分钟。

iOS开发之XML解析

 1.XML格式

<?xml version="1.0" encoding="utf-8" ?> 表示XML文件版本, 内部文本使用的编码

<root> 表示根节点

<CityName>北京</CityName>  一个结点, CityName是结点名, 北京结点值

<Item key="1" value="A"></Item>     key="1"是结点属性, key属性名, "1"属性值

 下面是一份XML文件

北京
201
0
010

下面说明以下如何解析XML文件(使用GData开源库实现XML解析)

使用GData之前需要配置XML库

//配置XML库(配置完才能使用)    //(1)添加头文件搜索路径    //      Header Search Paths-> /usr/include/libxml2    //(2)添加二进制库    //  Link library ->  lixml2.dylib    //(3)源文件添加编译选项    //      -fno-objc-arc    //(4)添加头文件    //  #import "GDataXMLNode.h"

 下面举例说明

//1.加载和解析XML文件    NSString *path = [[NSBundle mainBundle] pathForResource:@"xml.txt" ofType:nil];    NSData *data = [[NSData alloc] initWithContentsOfFile:path];    // GDataXMLDocument 表示XML文档对象    // initWithData 使用NSData初始化, 就是解析    GDataXMLDocument *doc = [[GDataXMLDocument alloc] initWithData:data options:0 error:nil];        //2.获取指定结点 XPath    //CityName路径: /root/systemConfig/CityName    NSArray *array = [doc nodesForXPath:@"/root/systemConfig/CityName" error:nil];    //CityName    GDataXMLElement *element = [array firstObject];    NSLog(@"name=%@ value=%@",element.name,element.stringValue);        //3.获取指定结点的属性    NSArray *items = [doc nodesForXPath:@"/root/systemConfig/ComeChannel/Item" error:nil];    GDataXMLElement *item = [items firstObject];    //获取属性, 属性使用GDataXMLElement表示    for(GDataXMLElement *attr  in item.attributes)    {        NSLog(@"a-name=%@ avalue=%@",attr.name,attr.stringValue);    }            //4.获取所有指定名字的结点(不管位置)    //XPath语法: //Item    NSArray *allItem = [doc nodesForXPath:@"//Item" error:nil];    for (GDataXMLElement *e in allItem) {        NSLog(@"name = %@",e.name);    }        //5.获取所有指定名字的属性(不管哪个结点的)    //XPath语法: //@value    NSArray *allValue = [doc nodesForXPath:@"//@value" error:nil];    for (GDataXMLElement *e in allValue) {        NSLog(@"value = %@",e.stringValue);    }        //6.逐层遍历XML文件    //获取根节点    GDataXMLElement *root = doc.rootElement;    //获取子节点    //root.children    //获取子节点个数    //root.childCount    //获取指定名字的子节点    //root elementsForName:<#(NSString *)#>

 

 

转载于:https://www.cnblogs.com/monian0313/p/4388244.html

你可能感兴趣的文章
极客工具
查看>>
【14】Python100例基础练习(1)
查看>>
boost bind使用指南
查看>>
/etc/fstab功能详解
查看>>
oracle高速缓存机制
查看>>
使用ntpdate更新系统时间
查看>>
Android M 特性 Doze and App Standby模式详解
查看>>
IE FF(火狐) line-height兼容详解
查看>>
谷歌Pixel 3吸引三星用户, 但未动摇iPhone地位
查看>>
python获取当前工作目录
查看>>
VUE中使用vuex,cookie,全局变量(少代码示例)
查看>>
grep -w 的解析_学习笔记
查看>>
量化交易之启航
查看>>
TX Text Control文字处理教程(3)打印操作
查看>>
CENTOS 7 如何修改IP地址为静态!
查看>>
MyCat分片算法学习(纯转)
查看>>
IO Foundation 3 -文件解析器 FileParser
查看>>
linux学习经验之谈
查看>>
mysqld_multi实现多主一从复制
查看>>
中介模式
查看>>