无法读取XML文件

时间:2010-01-23 13:00:18

标签: iphone objective-c xml touchxml

收到xml文件的内容时遇到了一些问题(使用TouchXML)。

我的第一个查询效果非常好,看起来像这样:

NSString *url = [NSString stringWithFormat:STATION_ID, latitude, longtitude];
CXMLDocument *rssParser = [[CXMLDocument alloc] initWithContentsOfURL:[NSURL URLWithString:url] options:0 error:nil];
NSLog(@"%@",rssParser);

所以这个日志给了我完整的XML文件。

之后,在另一种尝试相同的方法中:

NSString *url = [NSString stringWithFormat:WEATHER_URL, [positionInformation objectForKey:@"stationId"]];
CXMLDocument *rssParser = [[CXMLDocument alloc] initWithContentsOfURL:[NSURL URLWithString:url] options:0 error:nil];
NSLog(@"%@", rssParser);

但是log im getting是(null)。 Loggin URL String为我提供了没有空格或内容的正确URL,例如URL Log如下所示:

NSString *url = [NSString stringWithFormat:WEATHER_URL, [positionInformation objectForKey:@"stationId"]];
NSLog(@"%@", url);

调试器控制台中的结果是

http://api.wunderground.com/weatherstation/WXCurrentObXML.asp?ID=KCASUNNY19
用我的浏览器查看这个文件似乎没问题。有谁知道什么是错的?????

我也尝试过,首先通过stringWithContentsOfURL获取此URL的内容,但这也无效。

4 个答案:

答案 0 :(得分:2)

这家伙遇到了同样的问题:http://www.iphonedevsdk.com/forum/iphone-sdk-development/15963-problem-initwithcontentsofurl.html。看起来Weather Underground的API期待用户代理并在没有看到时发出500 HTTP响应。您可以在CXMLDocument上使用-initWithData:options:error:来传递使用NSMutableURLRequest获取的数据。

答案 1 :(得分:0)

您应该尝试使用initWithContentsOfURL的错误参数:options:error:。创建一个NSerror *对象,然后传递它:

NSError      *error;
CXMLDocument *rssParser = [[CXMLDocument alloc] initWithContentsOfURL:[NSURL URLWithString:url] options:0 error: &error];

如果没有获得rssParser对象,请检查该错误。

答案 2 :(得分:0)

我将此xml文件的内容复制到我自己的服务器并更改了url路径。 这是正确的,所以我认为阅读这个“.asp”文件存在问题。

HMM。但它的XML内容很奇怪。

//编辑: 我在我的服务器上创建了一个小的php文件,它返回“asp”文件的内容:

<?php
  echo file_get_contents("http://api.wunderground.com/weatherstation/WXCurrentObXML.asp?ID=KCASANFR70");
 ?>

阅读我的脚本内容有效,但这种解决方法不是我想要的。

哦该死的= /

答案 3 :(得分:0)

您确定您的网址字符串是否已正确编码,以便将问号解释为查询?在使用dataUsingEncoding初始化stringUsingEncoding之前,您可能需要先在网址上使用rssReader或{{1}}。