博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
XML解析
阅读量:4079 次
发布时间:2019-05-25

本文共 1844 字,大约阅读时间需要 6 分钟。

解析xml经常使用库:    GData
        底层使用系统的libxml2库, 使用的时候添加libxml2
        (1)导入GData库, 直接拖进来
        (2)设置头文件搜索路径  
            Build Setting--->header  search Path
            添加   /usr/include/libxml2
        (3)添加libxml二进制库
            Build Phases ---> Link Binary
            添加     libxml2.dylib
        (4)如果是arc的工程
            Build Phases ---> Compile Source File

                GDataXmlNode.m(非arc的)

GDataXMLNode

获取当前节点的值
- (NSString *)stringValue;
//获取当前节点子节点的个数
- (NSUInteger)childCount;
//获取子节点数组
- (NSArray *)children;
//根据索引获取子节点
- (GDataXMLNode *)childAtIndex:(unsigned)index;

GDataXMLElement
//根据节点名字获取所有的节点名为name的节点数组
- (NSArray *)elementsForName:(NSString *)name;
//获取节点的属性
- (NSArray *)attributes;
//根据属性名获取属性节点
- (GDataXMLNode *)attributeForName:(NSString *)name;
GDataXMLDocument
//创建文档树
- (id)initWithData:(NSData *)data encoding:(NSStringEncoding)encoding error:(NSError **)error;
//获取跟节点
- (GDataXMLElement *)rootElement;
//根据xpath 语法 获取 指定的节点数组
- (NSArray *)nodesForXPath:(NSString *)xpath error:(NSError **)error;

--------------------------------------------------------------------
// 取文件 -> data
    NSData *data = [NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"xml2" ofType:@"txt"]];
    
    // 读取整个xml文档
    GDataXMLDocument *doc = [[GDataXMLDocument alloc] initWithData:data options:0 error:nil];
    
    /** 这种方法也是可以的
     NSString *xmlStr = [[NSString alloc] initWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"xml" ofType:@"txt"] encoding:NSUTF8StringEncoding error:nil];
     GDataXMLDocument *doc2 = [[GDataXMLDocument alloc] initWithXMLString:xmlStr options:0 error:nil];
     */
    
    // 用xpath取出所有的book结点
    NSArray *bookElementArray = [doc.rootElement nodesForXPath:@"//book" error:nil];
    
    // 把book结点搞到我们自定义的book对象中去
    for (GDataXMLElement *bookElement in bookElementArray) {
        // bookElement --> BookItem
        // NSLog(@"%@", [self getBookItemWithElement:bookElement]);
        BookItem *book = [[BookItem alloc] initWithElement:bookElement];
        NSLog(@"%@", book);
    }

转载地址:http://sjsni.baihongyu.com/

你可能感兴趣的文章
uva 12260 - Free Goodies (dp,贪心 | 好题)
查看>>
uva-1427 Parade (单调队列优化dp)
查看>>
【设计模式】学习笔记14:状态模式(State)
查看>>
poj 1976 A Mini Locomotive (dp 二维01背包)
查看>>
斯坦福大学机器学习——因子分析(Factor analysis)
查看>>
linux对于没有写权限的文件如何保存退出vim
查看>>
IntelliJ IDEA 下的svn配置及使用的非常详细的图文总结
查看>>
【IntelliJ IDEA】idea导入项目只显示项目中的文件,不显示项目结构
查看>>
ssh 如何方便的切换到其他节点??
查看>>
JSP中文乱码总结
查看>>
Java实现DES加密解密
查看>>
HTML基础
查看>>
Java IO
查看>>
Java NIO
查看>>
Java大数据:Hbase分布式存储入门
查看>>
大数据学习:Spark RDD操作入门
查看>>
大数据框架:Spark 生态实时流计算
查看>>
大数据入门:Hive和Hbase区别对比
查看>>
大数据入门:ZooKeeper工作原理
查看>>
大数据入门:Zookeeper结构体系
查看>>