2011-10-06 5 views
1

tutorial에 따르면 XmlAppDelegate.m 파일의 코드는 지정된 URL에서 직접 XML 파일을 구문 분석합니다.Objective-c에서 URL의 파일을 저장하는 방법

XML 파일을 로컬 메모리에 저장하는 방법이 있습니까? 먼저 구문 분석 작업을 처리하십시오.

감사

NSURL *url = [[NSURL alloc] initWithString:@"http://www.edumobile.org/blog/uploads/XML-parsing-data/Data.xml"]; 
NSXMLParser *xmlParser = [[NSXMLParser alloc] initWithContentsOfURL:url]; 

답변

1

그냥 원시 바이트로 바이트를 잡고 데이터와 XML 파서를 초기화하기 전에 디스크에 저장 :

NSData *contents = [NSData dataWithContentsOfURL:url]; 
BOOL success = [contents writeToFile:path atomically:YES]; 

NSXMLParser *xmlParser = [[NSXMLParser alloc] initWithData:contents]; 
+0

아래로 설명해주십시오. –

-2

당신은 항상 문자열로로드 할 수 있습니다 : 그것은 통과하고 NSError 객체를 테스트하는 것이 가장 좋습니다

[NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil]; 

, 당신은 파일에 기록 할 수 있습니다 (writeToFile:atomically:encoding:error:).

당신은 NSData에서 initWithData:NSXMLParser에 문자열을 전달할 수 있습니다

[string dataUsingEncoding:NSUTF8StringEncoding]; 
+0

코코아에서는 일반적으로 원시 바이트 컨테이너에 문자열을 남용하는 것은 좋지 않습니다. 대신에'NSData'를 사용하십시오. –

+0

XML은 문자열이며, OP가 어떤 방식 으로든 처리하려는 경우, 그는 그 형식으로 원할 것입니다. 유일한 질문은 XML 인코딩이 올바른지 여부입니다. –

+0

서버에서 데이터를 가져 와서 해당 데이터를 파일에 저장하면 데이터에 문자열이 포함될 수 있다는 사실은 중요하지 않습니다. 또한 인코딩은 미리 알 수 있습니다. 그래서 NSXMLParser는 문자열이 아닌 NSData 객체를 사용합니다. 또한 더 효율적입니다. NSString은 인코딩 오류를 검사하기 위해 내용을 구문 분석해야합니다. NSData는 내용을 신경 쓰지 않습니다. –

관련 문제