zoukankan      html  css  js  c++  java
  • B9-kissXML的简单使用

    一、kissXML的github地址

         https://github.com/robbiehanson/KissXML

    二、使用前注意⚠

         项目要导入libxml2.dylib。另运行时提示"libxml/tree.h"找不到,需要在项目的Build Settings搜索Header S,将Header Search Paths项设置为:/usr/include/libxml2。

    三、kissXML的简单使用

       1、xml文件如下:

       2、几个方法使用举例

    #import"DDXML.h"
    
    #import"DDXMLElementAdditions.h"
    
    @implementation ViewController
    
    //解析XML
    
    staticNSString *kXML =@"//District//Province";
    - (void)viewDidLoad
    {
        [super viewDidLoad];
    
       NSString *path =[[NSString alloc] initWithString:[[NSBundle mainBundle] pathForResource:@"ProvinceCity" ofType:@"xml"]]
    NSData
    *data = [[NSData alloc] initWithContentsOfFile:path]; [self parsedDataFromData:data andProvince:@"江西省"]; [self parsedDataFromData:data]; } //取特定省份下包含所有城市 -(void)parsedDataFromData:(NSData *)data andProvince:(NSString *)province{ DDXMLDocument *doc = [[DDXMLDocument alloc] initWithData:data options:0error:nil]; /////解析 NSArray *items = [docnodesForXPath:kXMLerror:nil]; for (DDXMLElement *objin items) { DDXMLNode *aUser = [obj attributeForName:@"Name"];//取属性Name的值 if ([aUser.stringValueisEqualToString:province]) { NSArray *CityLst = [obj elementsForName:@"City"];//取城市点点列表,保存到数组中 if(CityLst.count>0)//第二层 { for (DDXMLElement *citysin CityLst) { DDXMLNode *citynode=[citys attributeForName:@"Name"]; NSLog(@"%@",citynode.stringValue); } } } } } //取所有省份及其下级节点,包含修改操作 - (void)parsedDataFromData:(NSData *)data{ DDXMLDocument *doc = [[DDXMLDocument alloc] initWithData:data options:0 error:nil]; /////解析 NSArray *items = [doc nodesForXPath:kXML error:nil]; for (DDXMLElement *obj in items) { DDXMLNode *aUser = [obj attributeForName:@"Name"];//取属性Name的值 //[aUser setStringValue:@"haha!"];//修改属性节点的值 [obj addAttribute:[DDXMLNodeattributeWithName:@"test"stringValue:@"wzh"]];//增加一个属性节点 [obj addAttributeWithName:@"ttt"stringValue:@"343"];//再增加一个属性节点 //[obj setStringValue:@"NewNode"];//设置当前节点的值 DDXMLNode *newnode=[DDXMLNode elementWithName:@"newNode"];//设置一个新的节点 [obj addChild:newnode];//给obj添加一个节点 DDXMLElement *newdxml = [[obj elementsForName:@"newNode"] objectAtIndex:0];//访问刚刚添加的节点 [newdxml addAttributeWithName:@"nodetwo"stringValue:@"twovalue"];//给刚添加的节点增加增的下级节点,并且下级节点再一个属性值 DDXMLNode *newnode2=[DDXMLNode elementWithName:@"newNode2" stringValue:@"hello!"]; [newdxmladdChild:newnode2]; } //保存到沙盒目录下 NSString *path =[[NSStringalloc]initWithFormat:@"%@/xmlData.xml", [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES) objectAtIndex:0]]; NSString *result=[[NSStringalloc]initWithFormat:@"%@",doc]; [resultwriteToFile:pathatomically:YESencoding:NSUTF8StringEncoding error:nil]; }

    四、补充,如何把资源文件放到documents目录下。(未验证)

        BOOL success;
        NSFileManager *fileManager = [NSFileManager defaultManager];
        NSError *error;
        NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
        NSString *documentsDirectory = [paths objectAtIndex:0];
        NSString *writableDBPath = [documentsDirectory stringByAppendingPathComponent:DATABASE_FILENAME];
        success = [fileManager fileExistsAtPath:writableDBPath];
        if (success) return;
        // The writable database does not exist, so copy the default to the appropriate location.
        NSString *defaultDBPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:DATABASE_FILENAME];
        success = [fileManager copyItemAtPath:defaultDBPath toPath:writableDBPath error:&error];
        if (!success) {
            ////NSAssert1(0, @"Failed to create writable database file with message '%@'.", DATABASE_FILENAME );
        } 
     
     
     
  • 相关阅读:
    数据预处理和特征工程
    批量梯度下降,随机梯度下降,小批量梯度下降
    动态规划和贪心算法的区别
    广告计价方式:CPM,CPC,CPA
    隐语义模型LFM
    windows下安装xgboost
    KMP算法
    sklearn中的SGDClassifier
    JS变量和数据类型
    JS的基本使用 使用外部的JS文件
  • 原文地址:https://www.cnblogs.com/yaann/p/4346037.html
Copyright © 2011-2022 走看看