利用KissXML解析xml数据,并对XML节点属性进行修改

最近工作做一个项目,需要用到对xml数据的解析,还有个奇葩需求,就是要修改节点属性,根据节点name的属性是否包含http/https,如果有,在下载对应的模型数据,并且修改节点模型的绝对路径;楼主拿到这个需求,也是很蒙,现在都是使用JSON数据了,我们却要用XML写配置文件!!!呜呜呜,好话不多说了,开始搞吧,老板说的都是对的;

然后楼主开始查资料,我找啊找,找啊找,最终找到两款三方库,GDataXML和KissXML,废话不多少,楼主直接上干货,

第一种方案,使用GDataXML解析,最终反正遇到各种,关键是不能单个修改,可能是小弟学艺不精,纠结了半个小时后,这种方法果断放弃了;

第二种方案:使用KissXML对xml配置文件进行解析,获取节点属性,并且进行修改,重新生成XML文件

第一步,废话不多说,先上干货,示例demo,https://github.com/EdwinXiang/ParasingXML,然后待我来分析一下

1、关于xml的基础知识我就不多说了,不会的去网上看对应资料;拿到KissXML后,显示查看了他的提供的方法和属性接口,大概明白了什么意思,然后再根据实例demo开始写我的工程了,导入KissXML库,这里需要加入依赖库,libxml2.tbd,然后需要对xml进行配置,不然会报错找不到文件

2、环境配置好了,咱们开始码代码吧

1、导入头文件

#import "DDXML.h"

#import "DDXMLElementAdditions.h"

2、读取xml文件内容

-(void)readXmlContent {

NSString *sanboxPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)lastObject];

NSString *path = [[NSString alloc]initWithFormat:@"%@/示例频道包",sanboxPath];

NSString *channelConfigxmlPath = [path stringByAppendingPathComponent:@"channelConfig.xml"];

NSData *data = [[NSData alloc]initWithContentsOfFile:channelConfigxmlPath];

//修改数据模型路径

[self parasingXmlData:data withKeyXML:@"//TrackingData//media"];

}

3、解析xml文件

-(void)parasingXmlData:(NSData *)data withKeyXML:(NSString *)kXML{

DDXMLDocument *doc = [[DDXMLDocument alloc]initWithData:data options:0 error:nil];

//解析

//修改media文件路径

NSArray *items = [doc nodesForXPath:kXML error:nil];

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

for (int i = 0; i = items.count;i++) {

你可能感兴趣的:(利用KissXML解析xml数据,并对XML节点属性进行修改)