IOS数据解析之XML

XML

1.定义

  • 指可扩展标记语言()
  • XML HTML
  • XML 传输数据,而非显示数据
  • XML XML 被设计为具有自我描述性。
<?xml version="1.0" encoding="utf-8"?>
<Users>
    <User>
        <name id = "201502004">张三</name>
        <age>24</age>
    </User>
    <User>
        <name id = "201502002">李四</name>
        <age>23</age>
    </User>
</Users>

2.解析

1) KissXML

*需导入KissXML库

*进入Build Settings,在搜索框中搜索Head Search Path,然后双击并点击+按钮添加/usr/include/libxml2

*然后搜索Other linker flags,同样的方式添加-lxml2

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    // 1.获取xml地址
    NSString *path = [[NSBundle mainBundle]pathForResource:@"user" ofType:@"xml"];
    // 2.获得本地urlString
    NSString *content = [NSString stringWithContentsOfURL:[NSURL fileURLWithPath:path] encoding:NSUTF8StringEncoding error:nil];
    // 3.解析
    DDXMLDocument *document = [[DDXMLDocument alloc]initWithXMLString:content options:0 error:nil];
    // 4.通过xpath找到指定节点
    NSArray *elements = [document nodesForXPath:@"/Users/User" error:nil];
    // 5.遍历
    for (DDXMLElement *element in elements) {
        // 取到name
        DDXMLElement *name = [element elementsForName:@"name"][0];
        // 得到name的属性
        NSArray *node = [document nodesForXPath:@"/Users/User/name" error:nil];
        DDXMLNode *nodeID = [node[0] attributeForName:@"id"];
        // 得到age
        DDXMLElement *age = [element elementsForName:@"age"][0];
        NSLog(@"name = %@, age = %@, id = %@",[name stringValue],[age stringValue],[nodeID stringValue]);
    }
}

2)GData(MRC下)

*导入GDataXMLNode库

* 找到Build OPhases - > Compile Sources ->GDataXMLNode.m双击添加 -fno-objc-arc

*进入Build Settings,在搜索框中搜索Head Search Path,然后双击并点击+按钮添加/usr/include/libxml2

*然后搜索Other linker flags,同样的方式添加-lxml2

- (void)GData{
    // 1.获得path
    NSString *path = [[NSBundle mainBundle]pathForResource:@"user" ofType:@"xml"];
    // 2.得到content
    NSString *content = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];
    // 3.得到节点
    GDataXMLDocument *document = [[GDataXMLDocument alloc]initWithXMLString:content options:0 error:nil];
    NSArray *elements = [document nodesForXPath:@"/Users/User" error:nil];
    for (GDataXMLElement *element in elements) {
        // 取到name
        GDataXMLElement *name = [element elementsForName:@"name"][0];
        // 得到name的属性
        NSArray *node = [document nodesForXPath:@"/Users/User/name" error:nil];
        GDataXMLElement *nodeID = [node[0] attributeForName:@"id"];
        // 得到age
        GDataXMLElement *age = [element elementsForName:@"age"][0];
        NSLog(@"name = %@, age = %@, id = %@",[name stringValue],[age stringValue],[nodeID stringValue]);
    }
}
- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

3.定义XML

*使用KissXML

- (void)createXML
{
    // 1.创建根元素
    DDXMLElement *rootElement = [[DDXMLElement alloc] initWithName:@"Users"];
    for (int i = 0; i < 2; i++)
    {
        // 2.User子元素
        DDXMLElement *userElement = [[DDXMLElement alloc] initWithName:@"User"];
        // name元素
        DDXMLElement *nameElement = [[DDXMLElement alloc] initWithName:@"name" stringValue:[NSString stringWithFormat:@"张三%d",i+1]];
        // age元素
        DDXMLElement *ageElement = [[DDXMLElement alloc] initWithName:@"age" stringValue:[NSString stringWithFormat:@"%d",20+i]];
        // 5.添加子元素
        [userElement addChild:nameElement];
        [userElement addChild:ageElement];
        // 6.在nameElement中添加属性
        DDXMLNode *node = [DDXMLNode attributeWithName:@"id" stringValue:@"xxxx"];
        [nameElement addAttribute:node];
        // 7.把User添加到根元素中
        [rootElement addChild:userElement];
    }
    NSLog(@"--%@",[rootElement description]);
}
时间: 2024-08-14 04:38:23

IOS数据解析之XML的相关文章

IOS数据解析_使用GDataXML解析,多层结构,相同目录的方法

项目例子(包含GDataXML框架) http://download.csdn.net/detail/u013686641/7672689 /*说明 将GDataXML引入你的项目 加入libxml2框架 导入#import "GDataXMLNode.h" 在TARGETS 接下来再进入Build Settings,在搜索框中搜索header search paths,添加/usr/include/libxml2 然后搜索Other linker flags,同样的方式添加-lxml

数据解析1:XML解析(2)

上一篇着重记录了XML解析中的SAX解析,该篇继续上篇(数据解析1:XML解析(2))未讲完的内容. XML补充: 1. 2. . 3. 示例:使用SAX解析一个比较复杂的XML文件 1 <?xml version="1.0" encoding="UTF-8"?> 2 <!-- START_DOCUMET:第一个节点 3 END_DOCUMET:尾节点 4 START_TAG:其他的首部的节点 p pn c cn... 5 END_TAG:其他的尾

数据解析1:XML解析(3)

XML解析的第二种方法是PULL解析. PULL解析是以事件常量的的方法进行解析,何为事件常量? 当解析器从头到尾解析XML文件时,解析到文档开头定义为解析到一个常量XmlPullParser.START_DOCUMENT,当解析到开始标签定义为解析到一个常量XmlPullParser.START_TAG,当解析到结束标签定义为解析到一个常量XmlPullParser.END_TAG,当解析到文档结尾定义为解析到一个常量XmlPullParser.END_DOCUMENT. 下面是PULL解析的

iOS之数据解析之XML解析

XML解析常见的两种方式:DOM解析和SAX解析 DOM解析 DOM:Document Object Model(文档对象类型).解析XML时,读入整个XML文档并构建一个驻留内存的树结构(节点树),通过遍历数结构可以检索任意XML节点,读取它的属性和值,而且通常情况下,可以借助XPath,直接查询XML节点. 进行DOM方式解析数据需要使用一个第三方的类GDataXMLNode GDataXMLNode是Google提供的开源XML解析类,对libxml2.tbd进行了Objective-C的

数据解析之XML和JSON

1. 解析的基本的概念 解析:从事先规定好的格式中提取数据 解析前提:提前约定好格式,数据提供方按照格式提供数据.数据获取方则按照格式获取数据 iOS开发常见的解析:XML解析.JOSN解析 2. XML数据结构 1> 概述 XML:Extensible markup language(可扩展标记语言),主流数据格式之一,可以用来存储和传输数据. 2> XML数据格式的功能 数据交换 内容管理 用作配置文件 3> XML数据格式的语法 声明 节点使用一对标签表示:起始和结束标签. 根节点

数据解析(XML,JSON)

XML文件有多种样式,标准的是把数据存在字节点上,还有的就是把数据直接存储在属性里面 #import"ViewController.h" @interface ViewController ()<NSXMLParserDelegate>{    NSMutableArray * listArr;     NSString      *elementTag;} @end @implementation ViewController - (void)viewDidLoad { 

数据解析1:XML解析(1)

Http网络传输中的数据组织格式主要有三种: 1.HTML方式 2.XML方式 3.JSON方式 其中XML方式的数据解析有三种:DOM解析,SAX解析,Pull解析. 下面主要讲解SAX解析. 因为SAX解析是解析XML格式的数据的,那么首先要大致了解下什么是XML,以及XML数据有什么特点. 下面是一个XML数据文件: 分析:XML文件和HTML文件很相似,都是由标签构成,但是XML比HTML更灵活,XML被称为可扩展性标记语言.其中第一行的是固定的格式,文件主体全部有双标签构成,且标签是自

iOS网络数据解析之XML解析-GDataXML

GDataXML 第三方xml解析框架 DOM解析:一次性将整个XML文档加载进内存,比较适合解析小文件 GDataXML中常用的类 GDataXMLDocument: 代表整个XML文档 GDataXMLElement: 代表文档中的每个元素 使用attributeForName:方法可以获得属性值 要使用GDataXML,先要对项目进行一些配置.1>导入libxml2动态库targets--Build Phases--link Binary With Libraries 2>设置libxm

IOS数据解析JSON

//非原创 作为一种轻量级的数据交换格式,json正在逐步取代xml,成为网络数据的通用格式. 有的json代码格式比较混乱,可以使用此“http://www.bejson.com/”网站来进行JSON格式化校验(点击打开链接).此网站不仅可以检测Json代码中的错误,而且可以以视图形式显示json中的数据内容,很是方便. 从IOS5开始,APPLE提供了对json的原生支持(NSJSONSerialization),但是为了兼容以前的ios版本,可以使用第三方库来解析Json. 本文将介绍To