PHP生成的XML上的NSXMLParser解析问题

PHP生成的XML上的NSXMLParser解析问题,php,objective-c,xml,ios4,nsxmlparser,Php,Objective C,Xml,Ios4,Nsxmlparser,我使用NSXMLParser制作了一个解析器iPhone应用程序来解析PHP生成的XML(http://raptor.hk/rta_handler.php?action=category),但没有返回结果。我尝试了一些方法,但仍然无法返回结果 我意外地将PHP生成的XML保存到一个XML文件中,并重新上传到web服务器(http://raptor.hk/rta_handler.xml),并更改了NSXMLParser,parser应用程序可以工作并返回我需要的所有内容 问题是,我需要PHP函数使

我使用NSXMLParser制作了一个解析器iPhone应用程序来解析PHP生成的XML(http://raptor.hk/rta_handler.php?action=category),但没有返回结果。我尝试了一些方法,但仍然无法返回结果

我意外地将PHP生成的XML保存到一个XML文件中,并重新上传到web服务器(http://raptor.hk/rta_handler.xml),并更改了NSXMLParser,parser应用程序可以工作并返回我需要的所有内容

问题是,我需要PHP函数使XML动态化。我怎样才能做到呢?我的
NSXMLParser
XML代码如下:

在load parser函数中:

NSURL *xmlURL = [NSURL URLWithString:URL];
rssParser = [[NSXMLParser alloc] initWithContentsOfURL:xmlURL];

[rssParser setDelegate:self];
[rssParser setShouldProcessNamespaces:NO];
[rssParser setShouldReportNamespacePrefixes:NO];
[rssParser setShouldResolveExternalEntities:NO];
[rssParser parse];
(void)parserdistartdocument:(NSXMLParser*)parser
中,为空

(void)解析器中:(NSXMLParser*)发生了解析器parseError:(NSError*)parseError

NSString *errorString = [NSString stringWithFormat:@"Unable to download entries (ERR_CODE: %i)", [parseError code]];
NSLog(@"error parsing XML: %@", errorString);
UIAlertView *errorAlert = [[UIAlertView alloc] initWithTitle:@"Error loading content" message:errorString delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
[errorAlert show];
[errorAlert release];
errorAlert = nil;
(void)parser:(NSXMLParser*)parser didStartElement:(NSString*)elementName namespaceURI:(NSString*)namespaceURI qualifiedName:(NSString*)qName属性:(NSDictionary*)attributeDict

currentElement = [elementName copy]; 
if ([elementName isEqualToString:@"category"]) { 
    // clear out our story item caches... 
    item = [[NSMutableDictionary alloc] init]; 
    self.currentTitle = [[NSMutableString alloc] init];
    self.currentID = 0;
} 
(void)parser:(NSXMLParser*)parser didEndElement:(NSString*)elementName namespaceURI:(NSString*)namespaceURI qualifiedName:(NSString*)qName

if ([elementName isEqualToString:@"category"]) {    
    [item setObject:self.currentTitle forKey:@"title"]; 
    [item setObject:[NSString stringWithFormat:@"%d", self.currentID] forKey:@"id"]; 
    [self.entries addObject:item]; 
    [item release];
    item = nil;
} 
(void)parser:(NSXMLParser*)parser foundCharacters:(NSString*)string

NSString *trimmed = [string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
if ([currentElement isEqualToString:@"title"]) { 
    [self.currentTitle appendString:trimmed]; 
} else if([currentElement isEqualToString:@"id"]) {
    if(trimmed.length > 0) {
        self.currentID = [trimmed intValue];
    }
}
(void)parserDidEndDocument:(NSXMLParser*)parser

[tbl_categories reloadData];
(void)tableView:(UITableView*)tableView didSelectRowAtIndexPath:(nsindepath*)indepath
中,一些不相关的实验代码

那么,我的代码有什么问题吗?还是在我的PHP生成的XML中

更新:我使用的PHP代码

<?php
  require_once('wp-blog-header.php');
  // === XML Header ===
  header('Content-Type: text/xml; charset=utf-8');
  echo '<?xml version="1.0" encoding="utf-8" ?>' . "\n";
  // echo the XML contents here ......
?>

如果您已经设法使它在服务器上的XML文件中正常工作,那么问题很可能出在PHP上。检查是否将响应标题内容类型设置为application/xml或text/xml

header('Content-Type: text/xml')

我已经将标题设置为:Content-Type:text/xml;字符集=utf-8。您可以再次检查页面信息。不过,它还是不起作用。嗯,奇怪。我能看到的唯一区别是服务器上的XML文件返回
application/XML
。或许可以尝试将其用于PHP头?会认为这不会有什么不同,但值得一试!