Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 使用objective C(iOS 5)读取XML文件_Objective C_Ios5_Xml Parsing_Xcode4.2 - Fatal编程技术网

Objective c 使用objective C(iOS 5)读取XML文件

Objective c 使用objective C(iOS 5)读取XML文件,objective-c,ios5,xml-parsing,xcode4.2,Objective C,Ios5,Xml Parsing,Xcode4.2,我正在尝试使用objective C语言读取XML文件并对其进行解析。我正在使用XCode 4.2并为iPhone编写应用程序。我已经创建了Viewcontroller.h和.m文件。我使用的是NSXMLParser,xml文件名为simple.xml。我已经从w3schools网站下载了它。我没有使用弧。没有生成错误。 下面是我在viewDidLoad方法中的代码- NSString *filePath; filePath = [[NSBundle mainBundle] pathForRes

我正在尝试使用objective C语言读取XML文件并对其进行解析。我正在使用XCode 4.2并为iPhone编写应用程序。我已经创建了Viewcontroller.h和.m文件。我使用的是NSXMLParser,xml文件名为simple.xml。我已经从w3schools网站下载了它。我没有使用弧。没有生成错误。 下面是我在viewDidLoad方法中的代码-

NSString *filePath;
filePath = [[NSBundle mainBundle] pathForResource:@"simple" ofType:@"xml"];
NSData *fileData = [NSData dataWithContentsOfFile:filePath]; 
NSString *urlString = [[NSString alloc] initWithData:fileData encoding:NSASCIIStringEncoding];
NSLog(@"File data is %@",urlString);    
NSString* str= urlString;
NSData* data=[str dataUsingEncoding:NSUTF8StringEncoding];
xmlParser = [[NSXMLParser alloc] initWithData:data];
xmlParser.delegate = self;
[xmlParser parse];
以下是XML内容-

<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- Edited by XMLSpy® -->
<breakfast_menu>
    <food>
        <name>Belgian Waffles</name>
        <price>$5.95</price>
        <description>two of our famous Belgian Waffles with plenty of real maple syrup</description>
        <calories>650</calories>
    </food>
    <food>
        <name>Strawberry Belgian Waffles</name>
        <price>$7.95</price>
        <description>light Belgian waffles covered with strawberries and whipped cream</description>
        <calories>900</calories>
    </food>
    <food>
        <name>Berry-Berry Belgian Waffles</name>
        <price>$8.95</price>
        <description>light Belgian waffles covered with an assortment of fresh berries and whipped cream</description>
        <calories>900</calories>
    </food> 
  </breakfast_menu>
但当我执行这段代码时,程序突然终止。我在日志中没有看到任何异常信息。但它与fileData变量有关,因为在XCode中,我使用此变量的行显示为绿色,文本线程1停止执行。。。。也许XML是用ISO-8859-1编码的,而我使用的是ASCII编码?早些时候,我使用类似的代码解析从web服务返回的XML,当时响应是用UTF-8编码的。或者可能我在内存管理方面犯了一些错误。allos,release等等?请在这方面帮助我


我还尝试用UTF-8在TextEdit中保存文件,但没有这样的选项

您需要实现xmlParser委托方法,如

– parserDidStartDocument:
– parserDidEndDocument:
– parser:didStartElement:namespaceURI:qualifiedName:attributes:
– parser:didEndElement:namespaceURI:qualifiedName:
当您使用alloc、new、copy、retain时,您拥有该对象,并且需要在完成后释放它们

NSString* str= urlString;
[urlString release];

因为您已经通过分配给str完成了urlstring。

删除了编码部分,并将我从xml文件中读取的任何数据直接传递给xml解析器,它对我起到了作用

你有没有试过逐行检查代码?它终止于哪一行?这不可能是编码问题,因为XML不包含非ASCII字符。请尝试此行。这应该行得通。我已经实现了那些委托方法。我没有收到任何与解析器delagte方法相关的错误或警告。