いくつかのチュートリアルを読んだ後、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
何が欠けているのか理解できず、常に解析は FALSE です。誰でも助けることができますか?
アップデート:
問題は、PHP リンクからの結果が実際の XML 出力ではないことでした (構造があり、混乱しました)。PHPでの私の最初の試みであり、それが理由です。PHP から XML 出力を生成する方法を調べます。
前もって感謝します。