iOS开发之XML解析代码

iOS开发之XML解析代码

    //1.加载和解析XML文件
    NSString *path = [[NSBundle mainBundle] pathForResource:@"xml.txt" ofType:nil];
    NSData *data = [[NSData alloc] initWithContentsOfFile:path];
    // GDataXMLDocument 表示XML文档对象
    // initWithData 使用NSData初始化, 就是解析
    GDataXMLDocument *doc = [[GDataXMLDocument alloc] initWithData:data options:0 error:nil];

    //2.获取指定结点 XPath
    //CityName路径: /root/systemConfig/CityName
    NSArray *array = [doc nodesForXPath:@"/root/systemConfig/CityName" error:nil];
    //CityName
    GDataXMLElement *element = [array firstObject];
    NSLog(@"name=%@ value=%@",element.name,element.stringValue);

    //3.获取指定结点的属性
    NSArray *items = [doc nodesForXPath:@"/root/systemConfig/ComeChannel/Item" error:nil];
    GDataXMLElement *item = [items firstObject];
    //获取属性, 属性使用GDataXMLElement表示
    for(GDataXMLElement *attr  in item.attributes)
    {
        NSLog(@"a-name=%@ avalue=%@",attr.name,attr.stringValue);
    }

    //4.获取所有指定名字的结点(不管位置)
    //XPath语法: //Item
    NSArray *allItem = [doc nodesForXPath:@"//Item" error:nil];
    for (GDataXMLElement *e in allItem) {
        NSLog(@"name = %@",e.name);
    }

    //5.获取所有指定名字的属性(不管哪个结点的)
    //XPath语法: //@value
    NSArray *allValue = [doc nodesForXPath:@"//@value" error:nil];
    for (GDataXMLElement *e in allValue) {
        NSLog(@"value = %@",e.stringValue);
    }

    //6.逐层遍历XML文件
    //获取根节点
    GDataXMLElement *root = doc.rootElement;
    //获取子节点
    //root.children
    //获取子节点个数
    //root.childCount
    //获取指定名字的子节点
    //root elementsForName:<#(NSString *)#>
}

效果图:

时间: 2024-12-13 20:11:48

iOS开发之XML解析代码的相关文章

iOS开发之XML解析

iOS开发之XML解析 1.XML格式 <?xml version="1.0" encoding="utf-8" ?> 表示XML文件版本, 内部文本使用的编码 <root> 表示根节点 <CityName>北京</CityName>  一个结点, CityName是结点名, 北京结点值 <Item key="1" value="A"></Item>  

IOS开发之XML解析以及下拉刷新上拉加载更多的分享

IOS开发之XML解析 1.XML格式 <?xml version="1.0" encoding="utf-8" ?> 表示XML文件版本, 内部文本使用的编码 <root> 表示根节点 <CityName>北京</CityName>  一个结点, CityName是结点名, 北京结点值 <Item key="1" value="A"></Item>  

Android开发之XML解析PULL

Android中解析xml是非常常用的操作,除了SAX和DOM两种最常用的解析xml外,Android内置的Pull解析器解析XML文件. 在Android的源码中大量的使用Pull解析,pull不仅更加的面相对象,而且使用速度和效率更高. Pull解析器是一个开源的java项目,既可以用于android,也可以用于JavaEE.如果用在javaEE需要把其jar文件放入类路径中,因为Android已经集成进了Pull解析器,所以无需添加任何jar文件.android系统本身使用到的各种xml文

iOS开发之html解析

使用XPath解析html 可以从此处https://github.com/topfunky/hpple下载工程,将TFHpple.h,TFHpple.m,TFHppleElement.h,TFHppleElement.m,XPathQuery.h,XPathQuery.m加到自己的项目中,在Frameworks中导入libxml2.x 在项目中找到Other Linker Flags,加入-libxml2 在项目中找到Header Search Paths,加入/usr/include/lib

iOS开发之block解析

1. block的本质是一个Objective-C的对象.为什么这么说? 在Objective-C中.runtime会在执行时依据对象的isa指针的指向,来度额定这个对象的类型.也能够觉得一个对象.它具有isa指针.就是一个OC对象 2. 你怎么知道block有isa指针呢.我们能够通过clang命令将来看block的实现 //測试代码 int main(int argc, const char * argv[]) { @autoreleasepool { void(^blk)(void)=^{

iOS开发之JSON解析

JSON解析步骤: - (NSArray *)products { if (_products == nil) { //第一步:获取JSON文件的路径: NSString *path = [[NSBundle mainBundle] pathForResource:@"products.json" ofType:nil]; //第二步:加载JSON文件: NSData *data = [NSData dataWithContentsOfFile:path]; //第三步:将JSON数据

iOS开发之0行代码加载NSBundle中的@2x与@3x图片

本文只针对通过NSBundle对象的方法 pathForResource 获取本地图片资源遇到的图片名无法自动识别@2x与@3x名称的问题进行测试.总结与分享. 加载本地图片资源的方式一般通过以下两种方法: 第1种: UIImage *img = [UIImage imageNamed:@"imageName"]; 第2种: UIImage *img = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForRes

iOS开发之17个常用代码整理

1.判断邮箱格式是否正确的代码 //利用正则表达式验证 -(BOOL)isValidateEmail:(NSString *)email { NSString *emailRegex = @"[A-Z0-9a-z._%+-][email protected][A-Za-z0-9.-]+\\.[A-Za-z]{2,4}"; NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES%@&quo

IOS开发之TableView、多个TableViewCell、自定义Cell、Cell上画画(故事板+代码方式)

最近要做一个项目,有个账户设置界面,看了微博.微信.QQ,他们的账号设置都比较原生态没做什么处理.春雨医生的账号不错,做了许多处理.不说废话直接上代码. 第一步: //UserTableViewCell.h这里定义第一种Cell #import <UIKit/UIKit.h> @interface UserTableViewCell : UITableViewCell @property (weak, nonatomic) IBOutlet UIImageView *userviewcelli