Разбор XML из URL в цели c - PullRequest
       0

Разбор XML из URL в цели c

0 голосов
/ 11 декабря 2011

Я использую следующий код:

- (void)parserDidStartDocument:(NSXMLParser *)parser{
 NSLog(@"File found and parsing started");

 }


 - (void)parseXMLFileAtURL: (NSString *)URL;{


 NSString *agentString = @"Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; en-us) AppleWebKit/525.27.1 (KHTML, like Gecko) Version/3.2.1 Safari/525.27.1";
 NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:
 [NSURL URLWithString:URL]];
 [request setValue:agentString forHTTPHeaderField:@"User-Agent"];

 xmlFile = [ NSURLConnection sendSynchronousRequest:request returningResponse: nil error: nil ];


 articles = [[NSMutableArray alloc] init];
 errorParsing= NO;

 rssParser = [[NSXMLParser alloc] initWithData:xmlFile];

 [rssParser setDelegate:self];

 // You may need to turn some of these on depending on the type of XML file you are parsing
 [rssParser setShouldProcessNamespaces:NO];
 [rssParser setShouldReportNamespacePrefixes:NO];
 [rssParser setShouldResolveExternalEntities:NO];

 [rssParser parse];

 }


 - (void)parser:(NSXMLParser *)parser parseErrorOccurred:(NSError *)parseError {

 NSString *errorString = [NSString stringWithFormat:@"Error code %i", [parseError code]];
 NSLog(@"Error parsing XML: %@", errorString);


 errorParsing=YES;
 }


 - (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict{
 currentElement = [elementName copy];
 ElementValue = [[NSMutableString alloc] init];
 if ([elementName isEqualToString:@"intro"]) {
 item = [[NSMutableDictionary alloc] init];

 }

 }


 - (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{
 [ElementValue appendString:string];
 }

 - (void)parserDidEndDocument:(NSXMLParser *)parser {

 if (errorParsing == NO)
 {
 NSLog(@"XML processing done!");
 } else {
 NSLog(@"Error occurred during XML processing");
 }

 }

Но на линии:

xmlFile = [NSURLConnection sendSynchronousRequest: запрос returningResponse: ноль ошибка: ноль];

и

rssParser = [[NSXMLParser alloc] initWithData:xmlFile];

 [rssParser setDelegate:self];

Я получил 2 ошибки:

Использование необъявленного идентификатора 'xmlFile'

Мой .h файл:

#import <UIKit/UIKit.h>

@class ontfsViewController;


@interface artikels : UIViewController {

    ontfsViewController *detailViewController;

    IBOutlet UIWebView *errorView;

    //xml
    NSXMLParser *rssParser;
    NSMutableArray *articles;
    NSMutableDictionary *item;
    NSString *currentElement;
    NSMutableString *ElementValue;
    BOOL errorParsing;
}

@property (nonatomic, retain) IBOutlet ontfsViewController *detailViewController;

@end

И я просматриваю:

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view from its nib.
    [self parseXMLFileAtURL:@"http://****.com/get_recent_posts.xml"];


}

И

[rssParser setDelegate:self];


 **Sending 'artikels *const__strong' tot parameter of incompatible type 'id<NSXMLPARSERDELEGATE>**

Кто-нибудь сейчас как это исправить?

1 Ответ

0 голосов
/ 11 декабря 2011

Вам нужно объявить xmlFile:

 NSData * xmlFile = [ NSURLConnection sendSynchronousRequest:request returningResponse: nil error: n];

Вам также нужно объявить свой класс как:

 @interface artikels : UIViewController<NSXMLParserDelegate> {
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...