문제

좋아,이 과제로 돌아 왔습니다. URL이 서버 파일을 가리키는 URL을 사용하여 웹 서버에서 XML을 올바르게 다운로드했지만 네트워크를 '리치 불가능한'경우 URL을 응용 프로그램의 로컬 XML에 가리키면 다음 오류가 발생합니다 (NB 파일은 다음 오류가 발생합니다. 서버의 직접 사본).

세부 사항 설명을 찾을 수는 없지만 URL이 액세스 할 수없는 위치를 가리키고 있다고 생각합니다. 이 리소스를 잘못된 위치에 저장하고 있습니까? 나는 HomeDirectory / Library에서 그것을 원한다고 생각합니다.

디버그 출력

loadMyXml: /var/mobile/Applications/950569B0-6113-48FC-A184-4F1B67A0510F/MyApp.app/SampleHtml.xml
2009-10-14 22:08:17.257 MyApp[288:207] Wah! It didn't work. Error Domain=NSXMLParserErrorDomain Code=5 "Operation could not be completed.   (NSXMLParserErrorDomain error 5.)" 
2009-10-14 22:08:17.270 MyApp[288:207] Operation could not be completed. (NSXMLParserErrorDomain error 5.)
도움이 되었습니까?

해결책 3

Dave Delong에 따르면

즉, 파일을 구문 분석하는 데 문제가 있음을 의미합니다.

웹 서버를 가리키기 때문에 XML의 XSLT 참조 일 수 있다고 생각합니다. 개선 된 답변 으로이 질문을 검토하고 돌아갈 것입니다.

파일의 경로였습니다. 내 코드는 올바른 위치에 가깝지 않았고 후행 편지 'S'가 놓쳤습니다. 오류 코드 정의는 "파일의 조기 끝"을 암시하여 성공하지 않고 내 파일을 자르게했습니다. 그런 다음 기본으로 돌아가 파일 시스템을 반복하여 파일을 찾았습니다.

NSFileManager를 사용하여 파일을 반복하여 디버깅 한 다음로드 할 수 있음을 확인했습니다. 목차 방법. nslog ()로 그것을 버릴 수있었습니다. 파일이 잘 형성되고 원시 형태로로드되었다고 확신 한 후에는 NSURL이 동일한 구문 및 방법으로 구성되었음을 확인했습니다. 그런 다음 올바르게로드했습니다. 이제 네트워크 파일 "Full-Feated"컨텐츠 또는 로컬 "샘플"컨텐츠를로드 할 수 있습니다.

NSDirectoryEnumerator *dirEnumerator = [[NSFileManager defaultManager] enumeratorAtPath: NSHomeDirectory()];
NSString *something;
NSString *f;

while( something = [dirEnumerator nextObject] ) {
    f = [[[NSString alloc] initWithFormat: @"%@/%@", NSHomeDirectory(), something] autorelease];
    if( [f hasSuffix :@"two_cookies.xml"] ){
    NSData *nsData = (NSData*) [[NSFileManager defaultManager] contentsAtPath: f];
        NSLog(@"%@", nsData );
    }
}

산출

2009-10-22 00:47:40.147 MyApp[13843:20b] <?xml version="1.0" encoding="iso-8859-1"?>

추신 : 여기서 명시 적으로 데이터 처리를 디버깅 할 때 다른 사람들에게 도움이되기를 바랍니다.

다른 팁

허용 된 답변과 같은 줄을 따라, 나는 다음을 사용하여 파일을로드하고 있었기 때문에 비슷한 문제가있었습니다.

[NSURL URLWithString:pathToFile];  // **Wrong**

대신, 그것은 다음과 같아야합니다.

[NSURL fileURLWithPath:pathToFile];

나도 내 파일이 어떻게 잘 형성되지 않았는지, 누락 될 수 있는지 등을 보는 데 오랜 시간을 보냈다.

Apple의 설명은 다음과 같습니다.http://developer.apple.com/mac/library/documentation/cocoa/reference/foundation/classes/nsxmlparser_class/reference/reference.html#//apple_ref/doc/c_ref/nsxmlparserprematecumenternercumenterRormermenterRormernercumentError

Parser Error Constants

The following error types are defined by NSXMLParser.

typedef enum {
   NSXMLParserPrematureDocumentEndError = 5

오류에 대한 설명은 다음과 같습니다.

NSXMLParserPrematureDocumentEndError

The document ended unexpectedly.

Available in Mac OS X v10.3 and later.

Declared in NSXMLParser.h.
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top