2013-08-20 1 views
2

xml 파일을 내 IOS 응용 프로그램으로 구문 분석합니다. 글쎄, 난 그냥 xml 파일의 URL을 사용할 때 그것을 할 수 있지만 Xcode 프로젝트에서 파일을 구문 분석 할 수 싶어요. 그래서 나는 다음과 같은 코드를 사용 :NSXMLParser가 xcode 프로젝트의 xml 파일을 구문 분석하지 않습니다.

NSURL *xmlFile = [NSURL fileURLWithPath:[[NSBundle mainBundle]pathForResource:@"Prices" ofType:@"xml"]]; 

NSXMLParser *xmlParser = [[NSXMLParser alloc]initWithContentsOfURL:xmlFile]; 

를하지만 구문 분석하지 않습니다, 난 아직도

NSString *path = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"Prices.xml"]; 
NSData *data = [[NSData alloc]initWithContentsOfFile:path]; 
NSXMLParser *xmlParser = [[NSXMLParser alloc]initWithData:data]; 

없는 구문 분석뿐만 아니라 다음을 사용하지만 URL에서 구문 분석 경우는

를 작동
NSURL *url = [[NSURL alloc] initWithString:@"http://myurl/Data.xml"]; 

NSXMLParser *xmlParser = [[NSXMLParser alloc] initWithContentsOfURL:url]; 

URL을 사용하지 않고 프로젝트 내에서 파일을 구문 분석해야하지만 비슷한 질문을 많이 검색 한 후에도 여전히 할 수 없습니다.

+0

위의 모든 프로세스에서'xmlParser'가 초기화됩니다 (XML에서 문제가있는 경우). 그렇다면 프로세스에서 문제가 발생합니다. – iphonic

+0

시도해보십시오. .... http : //stackoverflow.com/questions/4705588/nsxmlparser-example – Pradeep

답변

3

귀하의 응용 프로그램 번들의 일부가 아니기 때문에 xml 파일을로드 할 수 없습니다. 귀하의 응용 프로그램 대상 회원이 아니기 때문에 xml 파일을로드 할 수 없습니다.

정확한 문제를 파악하기 위해 여러 행으로 아래로 NSURL 건설 로직 브레이크

:

NSString *path = [[NSBundle mainBundle]pathForResource:@"Prices" ofType:@"xml"]; 
NSAssert(path, @"File does not exist in bundle! Check Target Membership. Or check for exact(!) filename match"); 
NSURL *xmlFile = [NSURL fileURLWithPath:path]; 
NSAssert(xmlFile, @"Could not create url from path. This should not happen because your problem is most likely in the path ;-)"); 

이 코드는 pathxmlFile이 전무 아니라는 것을 확인합니다. Prices.xml을 번들에서 찾을 수없는 경우 path은 0이됩니다.

NSAssert에서 응용 프로그램이 예외를 throw하는 경우 : Xcode에서 xml 파일을 선택하고 파일 관리자 패널을 열고 "대상 멤버십"에서 Apps 타겟의 xml 파일을 만듭니다.

해당 어설 션에 예외를 발생시키지 않으면 "구문 분석하지 않음"을 정의해야합니다.

+0

답장을 보내 주셔서 감사합니다. 여기에 "경로"가 무엇인지 모르겠지만 xml을 만들었습니다 프로젝트 내부의 파일이고 파일을 구문 분석 할 수 있다고 생각하지만 내용을 표시하지 않습니다. 정의 된 배열에 파일을 넣을 수는 없습니다. 내가 말하는 것에 대해 더 명확하게하기 위해, 다음 코드를 수행 한 후에'BOOL worked = [xmlParser parse]; if (worked) { NSLog (@ "Amount % i", [ListArray count]); } else { NSLog (@ "boo"); }'프로젝트를 실행하면 다음과 같이 표시됩니다. Amount 0 – nahid

+0

글쎄, 지금은 작동하지만 방금 XML 파일을 가지고 놀았습니다. 다시 작성했습니다. 지금 나는 거기에 XML 파일에 문제가 있다는 것을 알고 있지만, 나는 그 문제가 무엇인지 알지 못한다. – nahid