iOS XML,JOSN数据解析

【SpringBoot 3.x 第56节】再见 Feign?原生 HTTP 接口强势上位,这才是微服务调用的正确姿势! 🏆本文收录于《滚雪球学SpringBoot 3》,专门攻坚指数提升,本年度国内最系统+最专业+最详细(永久更新)。    本专栏致力打造最硬核 SpringBoot3 从零基础到进阶系列学习内容,🚀均为全网独家首发,打造精品专栏,专栏持续更新中…欢迎大家订阅持续学习。 如果想快速定位学习,可以看这篇【SpringBoot3教程导航帖】,你想学习的都被收集在内,快速投入学习!!两不误。    若还想学习更多,可直接前往《滚雪球学SpringBoot(全版本合集)》,涵盖SpringBoot所有版本教学文章 阅读详情

解析:按照事先约好的格式提取数据的过程叫做解析

 后台开发人员按照约好的数据存入格式,前台按照约好的格式读取数据

iOS开发常⻅见的解析:XML解析、JSON解析 

XML解析:

主流格式:SAX, DOM(前台与后台都可以识别)

 XML解析的工作原理

 1.SAX:基于事件回调的解析机制,逐行进行解析,效率低,适合海量数据

 2.DOM:将解析的数据整体读入内存,初始化树形结构,逐行解析,效率高,适合于小量数据,谷歌提供了一个解析用的第三方,GDataXMLNode

//SAX解析

//1.找到.xml文件的路径
    NSString *filePath = [[NSBundle mainBundle] pathForResource:@"Student" ofType:@"xml"];
    //2.根据路径获取该路径下文件里的数据
    NSData *data = [NSData dataWithContentsOfFile:filePath];
    //3.进行SAX解析
    NSXMLParser *parser = [[NSXMLParser alloc] initWithData:data];
    //设置代理
    parser.delegate = self;
    //通知parser对象开始解析
    [parser parse];
    [parser release];
#pragma mark - NSXMLParserDelegate

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict{
    //如果判断走到Student的开始标签时创建一个Student对象
    if ([elementName isEqualToString:@"Student"]) {
        self.student = [[Student alloc] init];
        self.student.position = attributeDict[@"position"];
        
    }
//    NSLog(@"%@", attributeDict[@"position"]);
}

- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{
    self.value = string;
}

- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{
    if ([elementName isEqualToString:@"name"]) {
        self.student.name = self.value;
    }else if ([elementName isEqualToString:@"gender"]){
        self.student.gender = self.value;
    }else if ([elementName isEqualToString:@"motto"]){
        self.student.motto = self.value;
    }else if ([elementName isEqualToString:@"Student"]){
        [self.dataSource addObject:self.student];
    }
    
    
}

- (void)parserDidEndDocument:(NSXMLParser *)parser{
    [self.tableView reloadData];
    }

#pragma mark - Table view data source

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return self.dataSource.count;
}


- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell" forIndexPath:indexPath];
    
    // Configure the cell...
    Student *stu = self.dataSource[indexPath.row];
    cell.textLabel.text = [NSString stringWithFormat:@"%@ %@ %@ %@", stu.name, stu.gender, stu.motto, stu.position];
    return cell;
}
//DOM解析(两种方式1.从上往下找(从根节点往下寻找)2.直接找)
<span style="font-size:18px;">[self.dataSources removeAllObjects];
    NSString *filePath = [[NSBundle mainBundle] pathForResource:@"Student" ofType:@"xml"];
    //对象是error的时候要传取值符
    NSError *error = nil;
    NSString *string = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:&error];
    //1.将数据整体存入内存
    GDataXMLDocument *document = [[[GDataXMLDocument alloc] initWithXMLString:string options:0 error:nil] autorelease];
    //2.找到根节点
    GDataXMLElement *rootElement = [document rootElement];
    //3.找student节点
    NSArray *studentElement = [rootElement elementsForName:@"Student"];
    //遍历获取到对应的叶子节点
    for (GDataXMLElement *obj in studentElement) {
        GDataXMLElement *nameElement = [[obj elementsForName:@"name"] firstObject];
        GDataXMLElement *genderElement =  [[obj elementsForName:@"gender"] firstObject];
        GDataXMLElement *mottoElement = [[obj elementsForName:@"motto"] firstObject];
        Student *student = [[[Student alloc] init] autorelease];
        //将叶子节点中的值赋给对应的对象
        student.name = [nameElement stringValue];
        student.gender = [genderElement stringValue];
        student.motto = [mottoElement stringValue];
        //获取节点中的标签值(属性值)
        GDataXMLNode *node = [obj attributeForName:@"position"];
        student.position = [node stringValue];
        [self.dataSources addObject:student];
    }
    [self.tableView reloadData];
</span>
2.DOM直接找
<span style="font-size:18px;">[self.dataSources removeAllObjects];
    NSString *filePath = [[NSBundle mainBundle] pathForResource:@"Student" ofType:@"xml"];
    //对象是error的时候要传取值符
    NSError *error = nil;
    NSString *string = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:&error];
    //1.将数据整体存入内存
    GDataXMLDocument *document = [[[GDataXMLDocument alloc] initWithXMLString:string options:0 error:nil] autorelease];
    //2.直接通过相对路径找到叶子节点
    NSArray *stus = [document nodesForXPath:@"//Student" error:nil];
    NSArray *names = [document nodesForXPath:@"//name" error:nil];
    NSArray *genders = [document nodesForXPath:@"//gender" error:nil];
    NSArray *mottos = [document nodesForXPath:@"//motto" error:nil];
 //   NSArray *positions = [document nodesForXPath:@"//Student" error:nil];
    
    for (int i = 0; i < 3; i++) {
        //创建对象
        Student *stu = [[Student alloc] init];
        //取出对应的叶子节点
        GDataXMLElement *name = names[i];
        GDataXMLElement *gender = genders[i];
        GDataXMLElement *motto = mottos[i];
   //     GDataXMLElement *position = positions[i];
        GDataXMLElement *stuElement = stus[i];
        //给对象对应的属性赋值
        stu.name = [name stringValue];
        stu.gender = [gender stringValue];
        stu.motto = [motto stringValue];
        GDataXMLNode *node = [stuElement attributeForName:@"position"];
        stu.position = [node stringValue];
        //将对象放入数组
        [self.dataSources addObject:stu];
        [stu release];
    }
    [self.tableView reloadData];
}
</span>

JSON解析(简单,也是最常用的)
<span style="font-size:18px;">//1.找到.json文件的路径
    NSString *filePath = [[NSBundle mainBundle] pathForResource:@"Student" ofType:@"json"];
    //2.根据路径获取该路径下文件里的数据
    NSData *data = [NSData dataWithContentsOfFile:filePath];
    //3.解析
    NSError *error = nil;
    NSMutableArray *arr = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:&error];
//    NSLog(@"%@", arr);
    for (NSDictionary *dic in arr) {
        Student *stu = [[Student alloc] initWithDictionary:dic];
        [self.dataSourse addObject:stu];
    }
    [self.tableView reloadData];
</span>



基于 Qt C++ 的金融行情交易终端 由于完整的商业级源码非常庞大,我将为你提供一个 **结构完整、可直接编译运行的基础框架**,并详细说明各模块的实现思路和扩展方向。double波动 = quote.lastPrice * (rand()%200 - 100) / 10000.0;// 订单缓存(orderId -> Order) 阅读详情

相关推荐

Stable-Baselines3性能优化:多环境训练对比指南(DummyVecEnv vs SubprocVecEnv)

本文深入对比了Stable-Baselines3中DummyVecEnv与SubprocVecEnv两种向量化环境的性能差异与应用场景。DummyVecEnv适用于轻量级、步进快的环境,调试友好且开销低;而SubprocVecEnv则通过真正的多进程并行,能显著加速计算密集型环境的训练。文章通过基准测试与决策树,指导开发者根据环境计算成本、CPU核心数等关键因素做出最优选择,以实现训练效率最大化。

weixin_29063979的博客 147

iOS 面试题 Josn 和 XML的 比较

 JSON与XML的区别比较 1.定义介绍 (1).XML定义 扩展标记语言 (Extensible Markup Language, XML) ,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。 XML使用DTD(document type definition)文档类型定义来组织数据;格式统一,跨

林彬的专栏 1302

电力系统实时仿真技术:从硬件在环到主流平台实践

实时仿真是一种基于高性能计算硬件,在严格时间约束下模拟物理系统动态行为的关键技术。其核心原理在于通过硬实时计算,确保仿真步长内的模型求解与输出时间严格同步,从而构建高保真的虚拟测试环境。这项技术的核心价值在于为电力电子、新能源并网等复杂系统的研发提供了无风险的“数字沙盘”,能够安全地验证控制器逻辑、保护装置动作及系统稳定性。在工程实践中,硬件在环测试通过连接虚拟模型与真实硬件,形成了控制器硬件在环和功率硬件在环两大主流应用场景,广泛应用于设备研发、电网安全分析和人员培训。本文聚焦于电力系统领域,深入解析了实

weixin_30952479的博客 420

玩转iOS开发 - JSON 和 Xml 数据解析

前言Json 和xml是网络开发中常用的数据格式,JSON轻量级,xml相对较复杂,所以现在用JSON的比例非常大,基本上从服务器获取的返回数据都是JSON格式的,作为iOS开发者,解析JSON, XML文件是网络开发最基本的一步,不扯蛋了,直接进入正题。JSON解析JSON介绍 JSON 本质上,就是一个”特殊格式”的字符串JSON 是网络上用来传输数据使用最广泛的数据格式,没有之一 JSON

Focus Now 6032

机器学习——Anaconda下载安装教程

Anaconda详细下载安装教程

2401_83693485的博客 3065

glm-4v-9b环境配置全攻略:从CUDA版本冲突到bitsandbytes异常排查(RTX A4000实测)

本文详细介绍了在RTX A4000显卡上配置GLM-4V-9B多模态大模型的完整流程,重点解决CUDA版本冲突和bitsandbytes异常问题。通过4-bit量化技术显著降低显存占用,提供从环境预检到量化部署的实战指南,帮助开发者在有限显存环境下高效运行大模型。

weixin_30369041的博客 405

iOS数据解析

解析的基本概念:从事先规定好的格式中提取数据。 解析的前提:数据提供方按照格式提供数据,获取方从规定的格式中获取数据。 iOS常见的解析方式:XML解析和JOSN解析。 XML:Extensible Mark Language,可扩展标记语言,主流数据格式之一,可以用来存储和传输数据。 功能: 1.数据交换 2.内容管理 3.配置文件 XML数据结构的语法: 声明式语

woaiwangting的专栏 1215

CIFAR-100模型性能对比:Top1与Top5错误率深度解析

本文深度解析了CIFAR-100数据集上Top1与Top5错误率的核心意义与差异。通过对比MobileNet、ResNet、DenseNet等主流模型的性能数据,揭示了模型架构、训练策略及数据集特性如何共同影响这两个关键指标,并为不同应用场景下的模型选择提供了实战指南。

weixin_28224217的博客 339

JOSN解析-XML解析

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33973609的博客 98

HFSS仿真中如何提取最大E/H场强与频率关系曲线

本文详细讲解了在HFSS仿真中提取最大E/H场强与频率关系曲线的完整流程。通过使用场计算器(Field Calculator)和创建场报告,工程师可以准确获得器件在整个频带内的电场或磁场强度峰值,并进一步推导出关键的功率容量曲线,为高功率射频器件(如滤波器、耦合器)的设计提供至关重要的安全评估依据。

ss78901的博客 1098

【乐鑫】唤醒词修改方法

乐鑫科技的语音识别模块(如ESP-SR)支持自定义唤醒词,但需通过官方工具链完成。

以实战经验介绍行业知识 826

iOSDay38网络之数据解析

1. 解析的基本的概念  解析:从事先规定好的格式中提取数据  解析前提:提前约定好格式,数据提供方按照格式提供数据、数据获取方则按照格式获取数据  iOS开发常见的解析:XML解析、JOSN解析 2. XML数据结构  1> 概述   XML:Extensible markup language(可扩展标记语言),主流数据格式之一,可以用来存储和传输数据。  2> XML数据格式的

孤非的博客 1237

Echarts - 去掉图表上的横线和竖线

效果图 默认效果: 变为如下图所示效果: 实现方法 官方配置文档:https://echarts.apache.org/zh/option.html#radar.splitLine 在 xAxis yAxis 配置中分别加入以下代码: splitLine: { show:false }

🏆 前端领域优质创作者 1万+

数据解析之XML和JSON

1. 解析的基本的概念  解析:从事先规定好的格式中提取数据  解析前提:提前约定好格式,数据提供方按照格式提供数据、数据获取方则按照格式获取数据  iOS开发常见的解析:XML解析、JOSN解析 2. XML数据结构  1> 概述   XML:Extensible markup language(可扩展标记语言),主流数据格式之一,可以用来存储和传输数据。  2> XM...

weixin_30929011的博客 162

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

json 数据解析

IOS中处理解析数据用JSON上传的对象和可以是JSON 之前做一个平台的时候要做一个动态生成JOSN文件的功能。以前大家以为一些开源的类库 像SBJSON和JSONKit这些都是一些比较好的。现在用第2种比较多,效率大家普遍比较的高。其实这两种JSON处理工具是可以把字典转化为JSON文件,也可以把JSON文件转化为字典。 在做这个平台的时候JOSN被当作一些参数配置的文件。

xiao771737的专栏 1868

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

IOS-分析JSON、XML的区别?JSON、XML解析方式的底层是如何处理的?

区别: 1)可读性方面:基本相同,xml的可读性比较好 2)可扩展性方面:都具有很好的扩展性 3)编码难度方面:相对而言:JSON的编码比较容易 4)解码难度:json解码难度基本为零,xml需要考虑子节点和父节点 5)数据体积方面:json相对于xml来讲,数据体积小,传递的速度更快些 6)数据交互方面:json与JavaScrpit的交互更加方便,更容易解析处理,更好的数据交互

Try My Best! 2677

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

OS中处理解析数据用JSON,XML与json区别

之前做一个平台的时候要做一个动态生成JOSN文件的功能。以前大家以为一些开源的类库 像SBJSON和JSONKit这些都是一些比较好的。现在用第2种比较多,效率大家普遍比较的高。其实这两种JSON处理工具是可以把字典转化为JSON文件,也可以把JSON文件转化为字典。 在做这个平台的时候JOSN被当作一些参数配置的文件。里面是你设置的一些参数。 IOS自己也有处理JSON的原生的东西。 通过

sammyieveo的专栏 655

如何使用josn

如何使用SBJson   Json是一种类似XML的数据传输方式。详细介绍请看:介绍JSON SBJson是与Objective-C结合比较好的库。 使用SBJson的文件需包含JSON.h头文件。 id jsonObject = [jsonString JSONValue]; 此句创建json对象,JSONValue自动将json字

liuqian1125nan的专栏 1935

IOS中处理解析数据用JSON上传的对象和可以是JSON

之前做一个平台的时候要做一个动态生成JOSN文件的功能。以前大家以为一些开源的类库 像SBJSON和JSONKit这些都是一些比较好的。现在用第2种比较多,效率大家普遍比较的高。其实这两种JSON处理工具是可以把字典转化为JSON文件,也可以把JSON文件转化为字典。 在做这个平台的时候JOSN被当作一些参数配置的文件。里面是你设置的一些参数。 IOS自己也有处理JSON的原生的东西。 通过...

weixin_33800593的博客 151

IOS 开发之网络数据下载和JSON解析

简介   在本文中,我将给大家介绍ios中如何运用NSURLConnection从网络上下载数据,以及解析JSON数据格式的数据,还有数据的显示和图片异步下载。   涉及到的知识点:   1.NSURLConnection的异步下载和数据请求方法的封装。   2.认识JSON格式和JSON格式的解析使用   3.数据在模拟器上的显示和图片的异步下载(使用SDWebImage异步...

weixin_30672295的博客 216

常用的 JSON XML INI CSV 数据格式详解

上面提到的四种文件格式——JSON、XML、INI 和 CSV——都属于文本文件。这意味着这些文件主要由可读的字符组成,可以使用文本编辑器打开和编辑。JSON标准的 JSON 使用 UTF-8 编码。这是因为 JSON 主要用于网络传输,而 UTF-8 编码在 Web 上非常普遍且兼容性良好。UTF-8 支持国际化字符,是目前最广泛使用的 Unicode 编码形式。XMLXML 支持多种字符编码,但 UTF-8 和 UTF-16 是最常用的。XML 文件的编码可以在文件的声明部分指定,例如。

hhw_hhw的博客 2019

iOS JSON解析Web

有些时候解析JSON数据的时候会解析到Web的XML数据就如下所见:  "BulletinId": "2395ef8f-bae7-423f-8b3e-344b44d97112",                 "Subject": "通知",                 "Content": " 重要通知\r\n\r\n近期\r\n\r\n  续发。\r\n\r\n&

XLaws的博客 383

iOS 中 JSON 数据交换格式

JSON (JavaScript Object Notation)是一种轻量级的数据交换格式。JSON 的具体教程,可以参见 JSON 中国:http://www.json.org.cn/index.htm ,当然还有 JSON 在线校验格式化工具:http://www.bejson.com/ ,希望深入学习 JSON 可以参考其他教程。JSON 的轻量级是相对于 XML 文档结构而言的,描述项目字符少,所以描述相同的数据所需的字符个数要少,当然传输的速度就会提高而流量也会减少。

Carl-w 2173

iOS开发网络篇 一一 JSON解析

1. 什么是JSON? 1). JSON是一种轻量级的数据格式,一般用于数据交互. 2). 服务器返回给客户端的数据,一般都是JSON格式或者XML格式(文件下载除外) 3). JSON的格式很像OC中的字典和数组 { "name" : "jack" , "age" :  10 } { "names" : [ "jack" , "rose" , "jim" ] } 标准JSON格式的注

Guizy 5482

JSON与XML的区别比较

1.定义介绍 随笔-159 文章-0 评论-342 (1).XML定义 扩展标记语言 (Extensible Markup Language, XML) ,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。 XML使用DTD(document type definition)

iOS界@迷糊小书童 2552
上一篇: iOS 网络请求数据两种请求方式GET,POST
下一篇: iOS给文件重命名
xiaoliu_iOS
博客等级 码龄11年 4粉丝 45原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值