用于IOS的XML解析器SDK

问题描述:

我需要能够解析我正在处理的项目的XML。用于IOS的XML解析器SDK

如何解析XML从网页到iPhone然后阅读其内容?

+0

见http://*.com/questions/4705588/nsxmlparser-example – Devraj

+0

可能[在iPhone Xcode中解析XML]的副本(http://*.com/questions/1021102/parsing-xml-in-iphone-xcode) – macbirdie

+0

请先生,离开XCode。快速把你的手放在一本iOS编程书上。任何重复的问题显示完全缺乏以前的研究可以并将用于对付你的代表。您有权阅读文档。如果您找不到文档,它将由Google提供给您。你明白这些权利吗? – macbirdie

使用ASIHTTPRequest按照此,how to parse XML in Objective c和处理所有这些方法

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

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

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

看到这个link

  NSString *[email protected]"http://www.lancers.jp/work"; 

      NSData *data=[NSData dataWithContentsOfURL:[NSURL URLWithString:url]]; 
      NSDictionary *dict=[XMLParser dictionaryForXMLData:data error:nil]; 

      NSLog(@"%@",[dict description]); 


    and use below file:::::: 


    XMLParser.h 

    // 
// XMLReader.h 
// 
// Created by Troy on 9/18/10. 
// Copyright 2010 Troy Brant. All rights reserved. 
// 

#import <Foundation/Foundation.h> 


@interface XMLParser : NSObject<NSXMLParserDelegate> 
{ 
    NSMutableArray *dictionaryStack; 
    NSMutableString *textInProgress; 
    NSError **errorPointer; 
} 

+ (NSDictionary *)dictionaryForXMLData:(NSData *)data error:(NSError **)errorPointer; 
+ (NSDictionary *)dictionaryForXMLString:(NSString *)string error:(NSError **)errorPointer; 

@end 


XMLParser.m 

// 
// XMLReader.m 
// 
// Created by Troy on 9/18/10. 
// Copyright 2010 Troy Brant. All rights reserved. 
// 

#import "XMLParser.h" 

NSString *const kXMLReaderTextNodeKey = @"text"; 

@interface XMLParser (Internal) 

- (id)initWithError:(NSError **)error; 
- (NSDictionary *)objectWithData:(NSData *)data; 

@end 


//NSString *url=[NSString stringWithFormat:@"%@",NSLocalizedString(@"locationname", nil)]; 
//url=[NSString stringWithFormat:url,app.latnear,app.lngnear]; 
//NSData *data=[NSData dataWithContentsOfURL:[NSURL URLWithString:url]]; 
//NSDictionary *dict=[XMLReader dictionaryForXMLData:data error:nil]; 


@implementation XMLParser 

#pragma mark - 
#pragma mark Public methods 

+ (NSDictionary *)dictionaryForXMLData:(NSData *)data error:(NSError **)error 
{ 
    XMLParser *reader = [[XMLParser alloc] initWithError:error]; 
    NSDictionary *rootDictionary = [reader objectWithData:data]; 
    [reader release]; 
    return rootDictionary; 
} 

+ (NSDictionary *)dictionaryForXMLString:(NSString *)string error:(NSError **)error 
{ 
    NSData *data = [string dataUsingEncoding:NSUTF8StringEncoding]; 
    return [XMLParser dictionaryForXMLData:data error:error]; 
} 

#pragma mark - 
#pragma mark Parsing 

- (id)initWithError:(NSError **)error 
{ 
    if (self = [super init]) 
    { 
     errorPointer = error; 
    } 
    return self; 
} 

- (void)dealloc 
{ 
    [dictionaryStack release]; 
    [textInProgress release]; 
    [super dealloc]; 
} 

- (NSDictionary *)objectWithData:(NSData *)data 
{ 
    // Clear out any old data 
    [dictionaryStack release]; 
    [textInProgress release]; 

    dictionaryStack = [[NSMutableArray alloc] init]; 
    textInProgress = [[NSMutableString alloc] init]; 

    // Initialize the stack with a fresh dictionary 
    [dictionaryStack addObject:[NSMutableDictionary dictionary]]; 

    // Parse the XML 
    NSXMLParser *parser = [[NSXMLParser alloc] initWithData:data]; 
    parser.delegate = self; 
    BOOL success = [parser parse]; 

    // Return the stack's root dictionary on success 
    if (success) 
    { 
     NSDictionary *resultDict = [dictionaryStack objectAtIndex:0]; 
     return resultDict; 
    } 

    return nil; 
} 

#pragma mark - 
#pragma mark NSXMLParserDelegate methods 

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict 
{ 
    // Get the dictionary for the current level in the stack 
    NSMutableDictionary *parentDict = [dictionaryStack lastObject]; 

    // Create the child dictionary for the new element, and initilaize it with the attributes 
    NSMutableDictionary *childDict = [NSMutableDictionary dictionary]; 
    [childDict addEntriesFromDictionary:attributeDict]; 

    // If there's already an item for this key, it means we need to create an array 
    id existingValue = [parentDict objectForKey:elementName]; 
    if (existingValue) 
    { 
     NSMutableArray *array = nil; 
     if ([existingValue isKindOfClass:[NSMutableArray class]]) 
     { 
      // The array exists, so use it 
      array = (NSMutableArray *) existingValue; 
     } 
     else 
     { 
      // Create an array if it doesn't exist 
      array = [NSMutableArray array]; 
      [array addObject:existingValue]; 

      // Replace the child dictionary with an array of children dictionaries 
      [parentDict setObject:array forKey:elementName]; 
     } 

     // Add the new child dictionary to the array 
     [array addObject:childDict]; 
    } 
    else 
    { 
     // No existing value, so update the dictionary 
     [parentDict setObject:childDict forKey:elementName]; 
    } 

    // Update the stack 
    [dictionaryStack addObject:childDict]; 
} 

- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName 
{ 
    // Update the parent dict with text info 
    NSMutableDictionary *dictInProgress = [dictionaryStack lastObject]; 

    // Set the text property 
    if ([textInProgress length] > 0) 
    { 
     [dictInProgress setObject:textInProgress forKey:kXMLReaderTextNodeKey]; 

     // Reset the text 
     [textInProgress release]; 
     textInProgress = [[NSMutableString alloc] init]; 
    } 

    // Pop the current dict 
    [dictionaryStack removeLastObject]; 
} 

- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string 
{ 
    // Build the text value 
    [textInProgress appendString:string]; 
} 

- (void)parser:(NSXMLParser *)parser parseErrorOccurred:(NSError *)parseError 
{ 
    // Set the error pointer to the parser's error object 
    *errorPointer = parseError; 
} 

@end