NSXMLParser和parse始终返回NO

时间:2012-12-01 19:00:58

标签: php ios xml nsxmlparser

在我读过的几个教程之后,我正在尝试创建自己的类,以便从PHP请求中检索xml结果并在我的iOS应用程序中使用它们的元素。

所以我有XMLParse.h

#import <Foundation/Foundation.h>

@interface XMLParser : NSObject <NSXMLParserDelegate>{

    NSString* url;
    NSXMLParser* parser;
    NSMutableString* element;
}

- (id) initXML: (NSString*)_url;

@end

和XMLParse.m

#import "XMLParser.h"

@implementation XMLParser{

    NSXMLParser* xmlParser;
    NSMutableArray* xmlOutputData;
    NSMutableString* xmlOutputNode;

}

- (id) initXML:(NSString *)_url{

    NSLog(@"initXML\n");
    url = _url;

    xmlParser = [[NSXMLParser alloc] initWithContentsOfURL:[NSURL URLWithString:url]];
    [xmlParser setDelegate:self];

    if ([xmlParser parse]) {
        printf("YES");
    } else{
        printf("NO");
    }

    return self;
}

- (void) parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName
   namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
     attributes:(NSDictionary *)attributeDict{

    NSLog(@"Started Element %@", elementName);
    if ([elementName isEqualToString:@"root"]) {

        if (!xmlOutputData) {

            xmlOutputData = [[NSMutableArray alloc] init];

            NSString* status = [attributeDict objectForKey:@"success"];

            if ([status isEqualToString:@"TRUE"]) {
                return;
            } else{
                printf("ERROR");
            }

        }
    }

}

- (void) parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{

    [xmlOutputNode appendString:[string stringByTrimmingCharactersInSet:
                                 [NSCharacterSet whitespaceAndNewlineCharacterSet]]];
}

- (void) parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName
   namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{

    if ([elementName isEqualToString:@"username"]) {

        NSLog(@"%@", xmlOutputNode);
    }

    xmlOutputNode = [[NSMutableString alloc]init];
}

@end

最后来自我的MenuView.m我正在初始化XMLParse类的对象

XMLParser* newParser = [[XMLParser alloc] initXML:@"http://localhost/conquestOfLancaster/login.php?username=test&password=1234"];

和屏幕上的输出看起来像,

2012-12-01 18:58:50.020 CoL[2363:c07] initXML
2012-12-01 18:58:50.030 CoL[2363:1b03] ADDRESPONSE - ADDING TO MEMORY ONLY: http://localhost/conquestOfLancaster/login.php?username=test&password=1234
NO

我无法理解我所缺少的东西,而且解析总是错误的。有人可以帮忙吗?

更新:

问题是我的PHP链接结果不是真正的XML输出(有结构而且让我很困惑)。这是我第一次使用PHP,这就是原因。我将搜索如何从PHP生成XML输出。

提前致谢。

0 个答案:

没有答案