iOS XML解析

深入解析iOS应用中的XML文件处理 本章节深入探讨了iOS应用开发中如何处理XML文件,包括在项目资源中创建和命名XML文件,以及使用NSXMLParser类来解析XML文件内容。介绍了如何将XML文件内容加载到NSData实例中,并通过NSXMLParserDelegate协议定义的代理方法来启动解析过程。此外,还详细讨论了如何创建XML元素对象和XML文档对象,以及如何利用这些对象来构建一个对象模型,以方便地访问解析后的XML文件内容。 阅读详情

1、XML文件:LanguagesName.xml

<?xml version="1.0" encoding="UTF-8"?>

<root>

    <language>

       <id>1</id>

       <name>English</name>

    </language>

    <language>

       <id>2</id>

        <name>简体中文</name>

    </language>

</root>



2、头文件:LangXMLParser.h

#import "LangXMLElement.h"

#import <Foundation/Foundation.h>


@interface LangXMLParser :NSObject<NSXMLParserDelegate>


- (NSMutableDictionary *)startParser;


@end


3、源文件:LangXMLParser.m

#import "LangXMLParser.h"


@implementation LangXMLParser{

   NSXMLParser *parser;

    NSMutableDictionary *mLangDict;

   LangXMLElement *mRootElement;

   LangXMLElement *mCurrentElement;

}


-(NSMutableDictionary *)startParser{

    NSString *xmlFilePath = [[NSBundlemainBundle]pathForResource:@"LanguagesName"ofType:@"xml"];

   NSData *data = [[NSDataalloc]initWithContentsOfFile:xmlFilePath];

   parser = [[NSXMLParseralloc]initWithData:data];

   parser.delegate =self;

    

   if([parser parse]){

       if(mLangDict ==nil){

           mLangDict = [[NSMutableDictionaryalloc] init];

        }

        [mLangDictremoveAllObjects];

        

        NSMutableArray *subs =mRootElement.subElements;

       for(int i =0; i < [subs count];i++){

           LangXMLElement *langElement = [subs objectAtIndex:i];

           NSArray *subElements = langElement.subElements;

            [mLangDictsetObject:[subElements[1]elementText] forKey:[subElements[0]elementText]];

        }

    }

    returnmLangDict;

}


-(void)parserDidStartDocument:(NSXMLParser *)parser

{

    mRootElement =nil;

    mCurrentElement =nil;

    mLangDict = nil;

}


-(void)parserDidEndDocument:(NSXMLParser *)parser

{

    mCurrentElement =nil;

}


- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict


{

    if(mRootElement ==nil){

        mRootElement = [[LangXMLElementalloc]init];

        mCurrentElement =mRootElement;

        

    }else{

       LangXMLElement *newElement = [[LangXMLElementalloc]init];

        newElement.parent =mCurrentElement;

        

        [mCurrentElement.subElementsaddObject:newElement];

       mCurrentElement = newElement;

    }

    

    mCurrentElement.elementName = elementName;

    mCurrentElement.attributes = attributeDict;

}


- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName


{

    mCurrentElement =mCurrentElement.parent;

}


- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string


{

    if([mCurrentElement.elementTextlength] > 0){

        mCurrentElement.elementText = [mCurrentElement.elementTextstringByAppendingString:string];

    }else{

        mCurrentElement.elementText = [NSMutableStringstringWithString:string];

    }

}


@end


ESP32+HC-SR04超声波测距:5分钟搞定智能避障小车核心功能(附完整代码) 本文详细介绍了如何使用ESP32开发板和HC-SR04超声波测距模块快速构建智能避障小车的核心功能。通过优化的接线方案、核心代码实现及调试技巧,帮助开发者5分钟内完成硬件连接与软件编程,实现高效的避障功能。附完整代码,适合创客教育和机器人开发。 阅读详情

相关推荐

光谱预处理最简单实现方法--基于OpenSA光谱分析库

系列文章目录 “光晰本质,谱见不同”,光谱作为物质的指纹,被广泛应用于成分分析中。伴随微型光谱仪/光谱成像仪的发展与普及,基于光谱的分析技术将不只停留于工业和实验室,即将走入生活,实现万物感知,见微知著。本系列文章致力于光谱分析技术的科普和应用。 文章目录系列文章目录前言一、数据来源二、代码解读2.1 读取数据2 .2 划分数据集2 .3 返回训练集和测试集并绘制光谱图片2.4 建立1-D CNN模型2.5 训练1-D CNN模型2.6 测试1-D CNN模型2.7 运行CNN模型,并用查看结果总结

Echo_Code的博客 7067

ios中如何解析xml文件

ios中如何解析xml文件 两种方法:1.ios中已有的NSXMLParse类                2.Google的GDataXML也是基于libxml2的,因此在使用GDataXML之前,你需要先导入libxml2。 这里详解ios中的nsxmlparse: NSXMLParser 实现的是sax方法解析xml文件。 dom实现的原理是把整个xml文档一次性读出,放在一个树

xiaoyaoziqing的专栏 9912

高效利用ChEMBL数据库:从靶点查询到活性数据处理的完整指南

本文提供了高效利用ChEMBL数据库的完整指南,从靶点查询到活性数据处理。详细介绍了靶点精准定位、高级过滤技巧、数据导出优化以及活性数据清洗、特征工程和可视化等实战技巧,帮助药物研发人员快速获取和处理生物活性数据,提升工作效率。

weixin_29278805的博客 798

ios XML解析

我们知道,ios XML解析一共有两种方法,一种是SAX解析,另一种是DOM解析。两者之间的区别就是 SAX是打印式解析,也就是我们常说的逐行解析。DOM是复印式解析,也就是我们常说的整篇解析。如果在解析过程中遇到错误,SAX解析会停止到出现错误的前一行,而DOM解析不会解析出任何的数据。但是因为SAX解析的缺点是逐行解析,所以相对于DOM解析来说速度比较慢。        下面我们通过一个例子

东东的博客 936

告别OLE!Delphi操作Excel的3种轻量级方案横向评测(FlexCel/XLSReadWriteII/LibXL)

本文深入评测了Delphi操作Excel的三种轻量级方案:FlexCel、XLSReadWriteII和LibXL。通过技术架构、API设计、性能测试和实战案例的全面对比,帮助开发者选择最适合的工具,提升Excel文件处理效率,告别传统OLE方案的依赖和性能问题。

onion的博客 930

Ubuntu22.04下3分钟搞定GitHub加速:SwitchHosts+小鱼工具保姆级配置指南

本文提供Ubuntu22.04下快速解决GitHub下载超时问题的保姆级教程,通过SwitchHosts图形化工具和小鱼一键换源工具实现高效加速。详细步骤包括环境准备、工具安装配置及验证方法,帮助开发者轻松优化GitHub访问速度,提升工作效率。

weixin_29258297的博客 564

iOS GData解析xml

在IOS平台上进行XML文档的解析有很多种方法,在SDK里面有自带的解析方法,但是大多情况下都倾向于用第三方的库,原因是解析效率更高、使用上更方便,关于IOS平台各种解析XML库的优缺点分析,可以看下这篇文章:http://www.raywenderlich.com/553/how-to-chose-the-best-xml-parser-for-your-iphone-project 这里

有木有啊的专栏 8864

python cartopy绘制扇形区域图/cartopy绘制北极部分区域

实际上,这个问题原因还是由于投影转换的问题,在set_extend时,绘制的上下边界仍然是方形、未被正确投影的边界,与我们的set_boundary存在冲突,最根本的原因还是在于cartopy对于投影计算的一些缺陷。另外我们需要指出的是:**该方法不适用于极地投影,即NorthPolarStereo,由于NorthPolarStereo本身投影特性只需一个参数,本身并不适合。我们绘制极地投影时,同样也是使用set_boundary绘制圆形边界,那么当我们想要绘制扇形时,可以通过。请根据喜好自行选择,

weixin_43750300的博客 3212

ios如何解析xml文件

ios中如何解析xml文件 两种方法:1.ios中已有的NSXMLParse类 2.Google的GDataXML也是基于libxml2的,因此在使用GDataXML之前,你需要先导入libxml2。 这里详解ios中的nsxmlparse: NSXMLParser 实现的是sax方法解析xml文件。 dom实现的原理是把整个xml文档一次性读出,放在一个树型结构里。

水泽木兰 960

手把手用瑞萨E1仿真器调试RH850 CAN通信:从报文收发到底层寄存器监控

本文详细介绍了使用瑞萨E1仿真器调试RH850 CAN通信的全过程,包括硬件连接、CS+开发环境配置、CAN控制器寄存器解析以及双通道网关实战开发。通过实战案例和错误诊断技巧,帮助开发者快速掌握RH850F1L的RS-CAN控制器应用,提升车载网络开发效率。

weixin_30919429的博客 163

利用RFIDIOt和NFC进行Hitag2密码暴力破解: Python代码实现

RFID即无线射频识别,是一种通信技术,可以通过无线电信号读取、捕获和保存终端上的信息。这项技术在物流、零售、医疗等领域有着广泛的应用。NFC即近场通信,是一种短距离的高频无线通信技术,允许电子设备之间进行非接触式点对点数据传输。Hitag2是一种常见的RFID标签,广泛应用于汽车防盗系统、门禁系统等。由于其安全性在过去被广泛认可,很多设备都采用了这种标签。但近年来随着密码破解技术的发展,Hitag2的安全性受到了一些挑战。

qq_38334677的博客 1562

iOS中XML解析

iOS中XML解析分为两种实现方式:SAX与DOM SAX方式:主要是事件驱动的解析方式,是逐行读取XML数据,不断回调代理,告诉代理当前解析的元素开始或者结束。 DOM解析方式:是讲整个XML数据全部读入内存,然后形成一颗树形结构,再根据元素的名称来读取相关的属性。 优缺点: (1)SAX解析适合大型文件解析,对内存占用比较小,但是解析是采用事件驱动方式,因此代码比较零散复杂。 (2)D

jiandanjinxin的专栏 712

出现 Error:Unable to access jarfile xxxx\target\nacos-server.jar 解决方法

Nacos中的 2.x执行步骤如上,如果需要安装下载1.x版本,执行该步骤之后 自动更新下载的是2.x版本 对此如果需要下载安装1.x的版本,可通过如下连接(windows版本)

码农研究僧的博客 5699

iOS网络编程开发—JSON解析与XML解析

一、什么是JSON JSON是一种轻量级的数据格式,一般用于数据交互 服务器返回给客户端的数据,一般都是JSON格式或者XML格式(文件下载除外)   JSON的格式很像OC中的字典和数组 {"name" : "jack", "age" : 10} {"names" : ["jack", "rose", "jim"]} 标准JSON格式的注意点:key必须用双引号   要想从JS

Jason 的博客 4976

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

iOS的XML解析

// xml文件的样式 的样式有多种样式,标准的是把数据存放在子节点中,还有就是比较简单的读取就是把数据直接存在属性里面 // 第一种,这是自己写出来的一种,把数据存储在子节点中,读取相对麻烦一些 // 第二种是从中国气象网的api上街区出来的一段,是把数据存储在了属性中,比较容易读取数据 // 下面是解析第一种样式的代码: // 头文件 ...

LTH1218的博客 236

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

IOS之XML解析

IOS之XML解析 1.XML格式 <?xml version="1.0" encoding="utf-8" ?> <root> <systemConfig> <CityName>北京</CityName> <CityCode>201</CityCode> ...

166

iOS解析xml

xml与json的对比,前面文章已经提供参考,至于xml的语法结构也不在这详述。 直奔iOS中解析xml的方法。 iOS中的XML解析(Dom和SAX)         Dom方式使用的是文档对象模型解析,它首先要将xml文件整个读入内存中,然后再来构建Dom对象,在DOM对象里,xml文件中的所有元素都可以当做节点(Node)对象来处理。这种方式优点是方便对文档进行增加、删除、修改、

小马哥好棒哦 862

iOS中XML解析框架之TBXML

iOS中XML解析框架之TBXML 首先,引用一下别人的~~ 一般在iOS平台下,比较常用的XML解析类库有如下几种: NSXMLParser,这是一个SAX方式解析XML的类库,默认包含在iOS SDK中,使用也比较简单。 libxml2,是一套默认包含在iOS SDK中的开源类库,它是基于C语言的API,所以使用起来可能不如NSXML方便。这套类库同时支持DOM和SAX解析,libxml2

大斌小姜 1133

【IOS中XML解析】了解iOS中XML解析

iOS中XML解析是本文要介绍的内容,在iPhone开发中,XML的解析有很多选择,iOS SDK提供了NSXMLParser和libxml2两个类库,另外还有很多第三方类库可选,例如TBXML、TouchXML、KissXML、TinyXML和GDataXML。问题是应该选择哪一个呢?解析 XML 通常有两种方式,DOM 和 SAX:DOM解析XML时,读入整个XML文档并构建一个驻留内存的树结

xuqiang918的专栏 1123

iOS开发之解析XML格式数据

XML格式的数据是一种数据的传输格式,由于它方便编写,结构清晰,所以深受程序员的喜爱,很多人都喜欢使用XML格式传输数据或者作为程序的配置信息。现在我将来实现在iOS中解析XML格式数据,语言使用Swift。      首先自己写一个简单的XML: zhangsan lisi wangwu many people

乞力马扎罗的雪CYF的博客 2509

IOS开发系列——xml文件解析

IOS开发系列——xml文件解析 一、概述 由于xml具有强大的扩展性及清晰的结构,使其广泛用于各种文件配置,比如皮肤配置;那么在IOS该如何解析xml文件呢?xml解析必然要用到xml解析库,有libxml、tinyxml等,但在IOS的API中提供了NSXMLParser类,通过NSXMLParser可以实现快速访问xml中相关字段; 二、NSXMLParser类几个重要

smallmuou的专栏 6004

ios中xml解析

iOS中XML解析是本文要介绍的内容,在iPhone开发中,XML的解析有很多选择,iOS SDK提供了NSXMLParser和libxml2两个类库,另外还有很多第三方类库可选,例如TBXML、TouchXML、KissXML、TinyXML和GDataXML。问题是应该选择哪一个呢? 解析 XML 通常有两种方式,DOM 和 SAX: DOM解析XML时,读入整个XML文档并构建一

YouChangJiang的专栏 940

IOS学习之十六:网络数据的XML解析

网络应用中的数据解析,因为最近的应用,无论是Android的和ios平台的,一直用也是建议用的都是Json解析, xml解析都有点被遗忘了。 然后最近自己在做着玩一个ios的小应用,涉及网络数据的抓取,一些网站可能都提供了自己api平台,这些一般都是支持 我们对于数据协议格式的设定的。但是后来我在找寻到一些Rss资源时,发现返回的数据都是xml格式的, 因此,那就只好用xml解析了。

killnono 7万+

iOS xml几种解析

iOS中XML解析是本文要介绍的内容,在iPhone开发中,XML的解析有很多选择,iOS SDK提供了NSXMLParser和libxml2两个类库,另外还有很多第三方类库可选,例如TBXML、TouchXML、KissXML、TinyXML和GDataXML。问题是应该选择哪一个呢? 解析 XML 通常有两种方式,DOM 和 SAX: DOM解析XML时,读入整个XML文档并构建一

jianjianyuer的专栏 2941

iOS XML数据解析

最近公司的活比较少,空闲时间十分多,遍寻思着写一款APP。在这个过程中便有使用到XML数据,于是研究了一下。目前写的这个是本地阅读软件,后续会把在写这个APP用到的技术以及遇到的问题都整理出来,通过博客的形式分享给大家。奇迹读书地址。

jiuchabaikaishui的专栏 1224
上一篇: iOS应用内部切换语言,不跟随系统
下一篇: UIScrollView 滚动视图 (实例)
KirogiYi
博客等级 码龄15年 49粉丝 87原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值