TFHpple返回null作为响应

时间:2012-04-23 11:38:12

标签: ios xml-parsing asihttprequest ios5

我正在尝试在我的项目中使用TFHpple,这里是代码...它很容易理解:

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view from its nib.
    NSURL *url = [NSURL URLWithString:@"http://v1.myurl.com/somemethod"];
    ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
    [request setDelegate:self];
    [request startAsynchronous];
}

- (void)viewDidUnload
{
    [self setGpMapView:nil];
    [super viewDidUnload];
    // Release any retained subviews of the main view.
    // e.g. self.myOutlet = nil;
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return YES;
}

- (void)requestFinished:(ASIHTTPRequest *)request
{
    // Use when fetching text data
    NSString *responseString = [request responseString];

    // Use when fetching binary data
    NSData *responseData = [request responseData];
    TFHpple *doc = [[TFHpple alloc] initWithXMLData:responseData];
    NSArray *elements = [doc searchWithXPathQuery:@"/entry"];
    NSLog(@"count: %@",[elements count]);

}

- (void)requestFailed:(ASIHTTPRequest *)request
{
    NSError *error = [request error];
}

之间我也在使用asihttp库进行http请求调用。 我在控制台中得到null,我再次检查了xml ..我知道标签是肯定的。 有什么办法吗?

编辑 - 1

这是xml架构:

<feed xmlns:s="http://syndication.nhschoices.nhs.uk/services" xmlns="http://www.w3.org/2005/Atom">
<title type="text">
NHS Choices - GP Practices Near Location - richmond - Within 50km
</title>
<id>
http://v1.syndication.nhschoices.nhs.uk/organisations/gppractices/location?range=50&northing=174900&easting=517900
</id>
<rights type="text">© Crown Copyright 2009</rights>
<updated>2012-04-24T11:54:04+01:00</updated>
<category term="Search"/>
<logo>
http://www.nhs.uk/nhscwebservices/documents/logo1.jpg
</logo>
<author>
<name>NHS Choices</name>
<uri>http://www.nhs.uk</uri>
<email>webservices@nhschoices.nhs.uk</email>
</author>
<link rel="self" type="application/xml" title="NHS Choices - GP Practices Near Location - richmond - Within 50km" href="http://v1.syndication.nhschoices.nhs.uk/organisations/gppractices/location?apikey=YAHUGHET&range=50&northing=174900&easting=517900&name=richmond"/>
<link rel="first" type="application/xml" title="first" length="1000" href="http://v1.syndication.nhschoices.nhs.uk/organisations/gppractices/location?apikey=YAHUGHET&range=50&northing=174900&easting=517900&name=richmond&page=1"/>
<link rel="next" type="application/xml" title="next" length="1000" href="http://v1.syndication.nhschoices.nhs.uk/organisations/gppractices/location?apikey=YAHUGHET&range=50&northing=174900&easting=517900&name=richmond&page=2"/>
<link rel="last" type="application/xml" title="last" length="1000" href="http://v1.syndication.nhschoices.nhs.uk/organisations/gppractices/location?apikey=YAHUGHET&range=50&northing=174900&easting=517900&name=richmond&page=10"/>
<link rel="alternate" title="NHS Choices - Find and choose services - GP Practices" href="http://www.nhs.uk/ServiceDirectories/pages/ServiceSearch.aspx?ServiceType=GP"/>
<s:SearchCoords>174900,517900</s:SearchCoords>
<entry>
<id>
http://v1.syndication.nhschoices.nhs.uk/organisations/gppractices/32248
</id>
<title type="text">Sayer A</title>
<updated>2012-04-24T10:54:04Z</updated>
<link rel="self" title="Sayer A" href="http://v1.syndication.nhschoices.nhs.uk/organisations/gppractices/32248?apikey=YAHUGHET"/>
<link rel="alternate" title="Sayer A" href="http://www.nhs.uk/ServiceDirectories/Pages/GP.aspx?pid=15F37AEF-EC5B-4A90-9E72-269ADEB39629"/>
<content type="application/xml">
<s:organisationSummary>
<s:name>Sayer A</s:name>
<s:address>
<s:addressLine>The Richmond Green Medical Cen</s:addressLine>
<s:addressLine>19 The Green</s:addressLine>
<s:addressLine>Richmond</s:addressLine>
<s:addressLine>Surrey</s:addressLine>
<s:postcode>TW91PX</s:postcode>
</s:address>
<s:contact type="General">
<s:telephone>020 83327515</s:telephone>
</s:contact>
<s:geographicCoordinates>
<s:northing>174900</s:northing>
<s:easting>517800</s:easting>
<s:longitude>-0.305512266736965</s:longitude>
<s:latitude>51.4608026642546</s:latitude>
</s:geographicCoordinates>
<s:Distance>0.1</s:Distance>
</s:organisationSummary>
</content>
</entry>
<entry>

1 个答案:

答案 0 :(得分:0)

确定。显然你的Root元素是<feed>,在它里面你有一些<entry>个元素。所以你必须改变这一行(注意双'/')才能捕获它们。此外,如果您要记录您的响应只是为了确保您正在为解析器提供正确的xml:

NSArray *elements = [doc searchWithXPathQuery:@"//entry"];