gpt4 book ai didi

ios - NSXMLParser 不解析 xcode 项目中的 xml 文件

转载 作者:塔克拉玛干 更新时间:2023-11-02 10:09:09 24 4
gpt4 key购买 nike

我要将一个 xml 文件解析到我的 iOS 应用程序中。好吧,当我只使用 xml 文件的 url 时我可以做到这一点,但我希望能够在 Xcode 项目中解析该文件。所以我使用了以下代码:

NSURL *xmlFile = [NSURL fileURLWithPath:[[NSBundle mainBundle]pathForResource:@"Prices" ofType:@"xml"]];

NSXMLParser *xmlParser = [[NSXMLParser alloc]initWithContentsOfURL:xmlFile];

但它不解析,我什至还使用了以下内容

NSString *path = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"Prices.xml"];
NSData *data = [[NSData alloc]initWithContentsOfFile:path];
NSXMLParser *xmlParser = [[NSXMLParser alloc]initWithData:data];

仍然没有解析,但如果我从 url 解析它,它就可以工作

NSURL *url = [[NSURL alloc] initWithString:@"http://myurl/Data.xml"];

NSXMLParser *xmlParser = [[NSXMLParser alloc] initWithContentsOfURL:url];

我需要在不使用url的情况下解析项目中的文件,但是在搜索了很多类似的问题之后,我仍然无法做到。

最佳答案

我认为您的 xml 文件无法加载,因为它不是您的应用程序包的一部分,因为它不是您的应用程序目标的成员。

将您的 NSURL 构造逻辑分解为多行以找出确切的问题:

NSString *path = [[NSBundle mainBundle]pathForResource:@"Prices" ofType:@"xml"];
NSAssert(path, @"File does not exist in bundle! Check Target Membership. Or check for exact(!) filename match");
NSURL *xmlFile = [NSURL fileURLWithPath:path];
NSAssert(xmlFile, @"Could not create url from path. This should not happen because your problem is most likely in the path ;-)");

此代码将检查 pathxmlFile 是否为 nil。如果在您的包中找不到 Prices.xml,path 将为 nil。

如果您的应用程序在第一个 NSAssert 上抛出异常:在 Xcode 中选择 xml 文件,打开文件检查器 Pane ,然后在“目标成员资格”中将您的 xml 文件设为应用程序目标的一部分。

如果它没有对任何这些断言抛出异常,您必须定义“不解析”的含义。 (或启用断言)

关于ios - NSXMLParser 不解析 xcode 项目中的 xml 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18329991/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com