2012-01-24 2 views
-1

으로이 파일의 XML 구문 분석 :내가이 XML 파일이 touchXML

<continents> 
    <continent1 id="EUR" name="EUROPE"></continent1> 
    <continent2 id="AME" name="AMERICA"></continent2> 
</continents> 

내가 NSXMLParser로 만들려고하지만 같은 시간에 결과, 나는 누군가가 나를 도울 수 touchXML 함께 노력할 것이라고 표시 할 수 없습니다 ? 덕분에 .

+2

귀하의 질문은 광범위합니다; 더 많은 세부 사항이 필요합니다. 이 XML을 구문 분석 할 데이터 구조는 무엇입니까? "나는 같은 시간에 결과를 보여줄 수 없다"는 것은 무엇을 의미합니까? 그 결과로 무엇을해야합니까? 지금까지 뭐 해봤 어? – NJones

+0

iphone에서 유럽과 미국을 표시해야합니다. NSXMLParser가있는 유럽 만 파싱하면 작동하지만 유럽과 미국을보고 싶습니다. TouchXML을 사용하면 더 좋을 것 같습니다. 다른 노드는 많이 이해하지 못합니다. XML. –

답변

1

"유럽"과 "아메리카"는 태그의 속성입니다. 태그에 "이름"으로 정의 된 속성. 당신은 실제로 NSXMLParser에 익숙해 져야하고, 그것을 파싱하는 이벤트 구동 방식을 사용해야합니다. 기본적으로 NSXMLParser의 대리자로 NSObject 하위 클래스를 만들고 요소를 만날 때 사용자 지정 개체의 대리자 메서드를 호출합니다. 그리고이 매우 간단한 XML은 완벽한 예제입니다. 예를 들어.

이 코드는 ARC를 사용합니다.

SimpleExampleParse.h :

@interface SimpleExampleParse : NSObject <NSXMLParserDelegate> 
@property (strong, nonatomic) NSMutableArray *continents; 
-(id)initWithString:(NSString *)stringToParse; 
@end 

SimpleExampleParse.m :

#import "SimpleExampleParse.h" 
@implementation SimpleExampleParse{ 
    NSXMLParser *myParser; 
} 
@synthesize continents; 
-(id)initWithString:(NSString *)stringToParse{ 
    if ((self = [super init])){ 
     myParser = [[NSXMLParser alloc] initWithData:[stringToParse dataUsingEncoding:NSUTF8StringEncoding]]; 
     myParser.delegate = self; 
     self.continents = [[NSMutableArray alloc] init]; 
     [myParser parse]; 
    } 
    return self; 
} 
-(void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict{ 
    // Check to see if this element has an attribute "name". 
    NSString *name = [attributeDict objectForKey:@"name"]; 
    // If name is not nil add it to our Array 
    if (name) [continents addObject:name]; 
} 
-(void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{ 
    // We don't care your XML contains no content 
} 
-(void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{ 
    // We don't care your XML contains no content 
} 
@end 

이 클래스는 다음과 같이 사용된다 :

NSString *stringToParse = @"<continents><continent1 id=\"EUR\" name=\"EUROPE\"></continent1><continent2 id=\"AME\" name=\"AMERICA\"></continent2></continents>"; 
SimpleExampleParse *parser = [[SimpleExampleParse alloc] initWithString:stringToParse]; 
NSLog(@"contenents %@",parser.continents); 

로그에서 출력 될 것이다

contenents (
    EUROPE, 
    AMERICA 
) 

당신은 당신 앞에서 일하는 것이 있으니 공부하고 공부하는 방법을 배우십시오.