一、问题描述

在处理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. CF448C Painting Fence (分治递归)

    Codeforces Round #256 (Div. 2) C C. Painting Fence time limit per test 1 second memory limit per tes ...

  2. JavaScript 学习笔记 -- String.trim + format

    最近仍在IE6徘徊,低版本的浏览器没有实现JavaScript 的trim() 和 format(). . 主要是这两个使用的比较多,先整理出来: 1.trim() -- 去除字符串中开始和结尾部分, ...

  3. ASO优化总结(基于网络分享的知识总结归纳)

    如何优化应用标题? 注意关键字的长度,尽量保证每一个关键字小于10个字符.保持快速更新,因为每次更新,你都将有机会删除表现不佳的关键字以 及增添新的关键字.在ASO中使用关键字的正确做法 标题,并非越 ...

  4. [设计模式] javascript 之 桥接模式

    桥接模式说明 定义:分离抽象化与实现化,使之可以自由独立的变化: 说明:由于软件环境需求原因,使得类型抽象具有多种实现以自身变化定义等情况,这使得我们要分离抽象实现与具体实现,使得抽象化与实现化解耦, ...

  5. git之常用指令

    参考:Git教程 - 廖雪峰的官方网站 1.git  //linux上检测是否安装git 2.sudo apt-get install git //linux上安装git 3.git config - ...

  6. WebStorm设置编辑器中的字体大小

    启动webStorm之后,点击“FIle"菜单,选择其下的”Settings" 2.在左侧的菜单中选择“Editor/Colors & Fonts/Font 在右侧Sche ...

  7. 如何把其他用户创建的表,导入到自己数据库是,所有者owner改变为自己创建的用户

     1. 导出用户 expdp user1/pass1 directory=dumpdir dumpfile=user1.dmp2. 导入用户 impdp user2/pass2 directory=d ...

  8. iOS开发——UI进阶篇(十四)modal

    一.modal与pushmodal从下面往上盖住原来的控制器,一般上一个控制器和下一个控制器没有什么关联时用modal,比如联系人的加号跳转页面,任何控制器都可以用modal push一般是上下文有关 ...

  9. 进军swift

    swift中文文档网站 http://letsswift.com/category/swiftguide/language-guide/ Swift的优缺点 , 来自珍妮讲解~~ 优点1.简洁(不是说 ...

  10. 认识Visual Studio 条件编译

    一开始是在一些源代码中看到这些语法符号,了解到这就是" 条件编译"技术