一、问题描述

在处理XML的过程中,在项目中手动创建名为“data.xml”的文件,加入网上找的内容

<?xml version="1.0" encoding="utf-8"?>
<Dogs>
<Dog id="001">
<name>Ryan</name>
<age>26</age>
</Dog>
<Dog id="002">
<name>Tang</name>
<age>27</age>
</Dog>
<Dog id="003">
<name>Lee</name>
<age>24</age>
</Dog>
</Dogs>

然后xcode加载data.xml中的内容

 -(void)readXML
{
//xml文件的路径
NSString *dataURL = [[NSBundle mainBundle]pathForResource:@"data" ofType:@"xml"];
//读取xml内容
NSData *data = [NSData dataWithContentsOfFile:dataURL];
GDataXMLDocument *doc = [[GDataXMLDocument alloc]initWithData:data options: error:nil];
//得到根标签元素Dogs
GDataXMLElement *rootElement = [doc rootElement];
//得到根标签元素下的子标签元素Dog
NSArray *elementsForDogs = [rootElement elementsForName:@"Dog"];
//遍历
for (GDataXMLElement *element in elementsForDogs) {
//id节点
GDataXMLNode *node = [element attributeForName:@"id"];
//id节点值
NSLog(@"Dog的id为%@", [node stringValue]);
//元素name
GDataXMLElement *elementName = [[element elementsForName:@"name"] firstObject];
NSLog(@"名字为%@", [elementName stringValue]);
//元素age
GDataXMLElement *elementAge = [[element elementsForName:@"age"] firstObject];
NSLog(@"年龄为%@", [elementAge stringValue]);
}
}

执行没有任何结果。

二、问题分析

估计原因是elementsForDogs元素个数为0,没有进入for循环。打印elementsForDogs的元素总数,结果真的是0。然后往上查找,发现原来是dataURL值为nil。为什么NSBundle的pathForResource:ofType: 返回值为nil?

找到当前app,右键点击“显示包内容”,发现目录下不存在data.xml文件

三、问题解决

告诉编译器把data.xml拷贝到05_JSON和XML_XML处理.app。

1.选择“项目”-->“TARGETS”下的05_JSON和XML_XML处理。

2.然后点击"Build phases",选择“Copy Bundle Resources”。

3.点击“+”添加data.xml。

4.“Copy Bundle Resources”包含data.xml了。

最后重新运行,结果出来了

NSBundle的pathForResource:ofType: 返回值为nil问题的更多相关文章

  1. iOS [[NSBundle mainBundle] pathForResource:@"" ofType:@""]无法获取到文件

    将一个文件导入到工程中后,用[[NSBundle mainBundle] pathForResource:@"" ofType:@""]来获取到该文件时,一直无 ...

  2. [[NSBundle mainBundle] pathForResource:fileName ofType:]获取文件路径不成功

    目标文件明明已经加入项目了,但是使用[[NSBundle mainBundle] pathForResource:fileName ofType:]来获取文件路径的时候却为nil: 遇到这个问题大家需 ...

  3. [[NSBundle mainBundle] pathForResource:@"name" ofType:@"type"] 找不到对应的文件解决方法

    最近在使用[[NSBundle mainBundle] pathForResource:@"name" ofType:@"type"]时,找不到其对应的文件,文 ...

  4. Autorelease返回值的快速释放机制

    + (instancetype)createSark { return [self new];}// callerSark *sark = [Sark createSark]; 编译器改写成了形如下面 ...

  5. 【Go入门教程3】流程(if、goto、for、switch)和函数(多个返回值、变参、传值与传指针、defer、函数作为值/类型、Panic和Recover、main函数和init函数、import)

    这小节我们要介绍Go里面的流程控制以及函数操作. 流程控制 流程控制在编程语言中是最伟大的发明了,因为有了它,你可以通过很简单的流程描述来表达很复杂的逻辑.Go中流程控制分三大类:条件判断,循环控制和 ...

  6. GetLastError()函数返回值及含义

    GetLastError返回的值通过在api函数中调用SetLastError或SetLastErrorEx设置.函数并无必要设置上一次错误信息,所以即使一次GetLastError调用返回的是零值, ...

  7. IOS开发中返回值为null时的处理

    在IOS开发中,如果得到了null返回值很容易造成程序崩溃,null和nil的判断方法不同. nil的判断方法: if(data==nil) {      NSLog(@"data is n ...

  8. [转]WinExec、ShellExecute和CreateProcess及返回值判断方式

    [转]WinExec.ShellExecute和CreateProcess及返回值判断方式 http://www.cnblogs.com/ziwuge/archive/2012/03/12/23924 ...

  9. Delphi检查GetElementByID返回值的有效性

    Delphi 可以像JavaScript 脚本语言一样使用GetElementByID方法访问网页中指定ID的元素,一般要配合TWebBrowser组件使用.首先使用TWebBrowser浏览网页,然 ...

随机推荐

  1. django 初级(一) 配置与周边

    一.下载安装 从 https://www.djangoproject.com/download/ 下载最新的 django 版本,写本文时最新版本为 django 1.7,官方说只需要 python6 ...

  2. JDBC:从数据库中取数据的一个bug

    先看错误信息: java.sql.SQLException: Before start of result set at com.mysql.jdbc.SQLError.createSQLExcept ...

  3. [译]Profile and debug your ASP.NET MVC app with Glimpse

    原文:http://www.asp.net/mvc/overview/performance/profile-and-debug-your-aspnet-mvc-app-with-glimpse Gl ...

  4. mysql sql语句执行时间查询

    第一种:show profiles 之类的语句来查看 1.查一下profile是不是打开了,默认是不打开的. mysql> show profiles; Empty set (0.02 sec) ...

  5. lwfs指定特定目录输出

    在特定节点启lwfs服务,输出特定的目录 在[root@devcpucs ~]# 节点启lwfs服务,输出指定目录/home/export/online1/systest/swcpucs 1.将gio ...

  6. gitlab一键安装 (转)

    原文地址:http://www.2cto.com/os/201411/353292.html 0 简介bitnami和gitlab bitnami BitNami是一个开源项目,该项目产生的开源软件包 ...

  7. Access应用笔记<二>

    关于access的应用笔记 20140822 基本完成access数据库的搭建,并且尝试了查重,不匹配项目查找,以及上传新数据等功能,表现良好. 记录一下目前研究出来的sql语句: 1)去除重复项 S ...

  8. 2.交通聚类 -层次聚类(agnes)Java实现

    1.项目背景 在做交通路线分析的时候,客户需要找出车辆的行车规律,我们将车辆每天的行车路线当做一个数据样本,总共有365天或是更多,从这些数据中通过聚类来获得行车路线规律统计分析. 我首先想到是K-m ...

  9. linux之vim编辑神器

    设置编辑器:export EDITOR=vim 1.ctrl+x ctrl+e  创建vim临时文件 2.ctrl+[ 退回到命令模式 3.命令模式下ZZ,保存退出 4.大写I行首插入,大写A行尾插入 ...

  10. java中堆栈(stack)和堆(heap)(还在问静态变量放哪里,局部变量放哪里,静态区在哪里.....进来)

    (1)内存分配的策略 按照编译原理的观点,程序运行时的内存分配有三种策略,分别是静态的,栈式的,和堆式的. 静态存储分配是指在编译时就能确定每个数据目标在运行时刻的存储空间需求,因而在编 译时就可以给 ...