質問

さて、私はこの仕事に戻りました。サーバーのファイルを指すURLを使用してXMLをWebサーバーから適切にダウンロードしますが、ネットワークが「到達不能」であることを検出すると、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参照であると思われます-Webサーバーを指しているためです。改善された回答でこの質問を確認して戻ります。

ファイルのパスでした。私のコードは適切な場所にさえ近くありませんでした-そして、末尾の文字 's'がありませんでした。エラーコードの定義は、「ファイルの途中で終了する」ことを意味し、成功せずにファイルを切り捨てました。その後、基本に戻り、ファイルシステムを反復処理してファイルを探しました。

NSFileManagerを使用してファイルを反復処理してデバッグし、 contentsAtPath メソッドでロード可能であることを確認しました。 NSLog()でダンプできました。ファイルが整形式で生の形式でロードされていると確信したら、NSURLが同じ構文とメソッドで構築されていることを確認しました。その後、正しくロードされました。これで、「フル機能の」ネットワークファイルを読み込むことができます。コンテンツまたはローカルの「サンプル」コンテンツ。

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"?>

PSここで明示的に説明することは、他の人がデータ処理をデバッグするときに役立つことを願っています。

他のヒント

受け入れられた答えと同じ行に沿って、次を使用してファイルをロードしていたため、同様の問題が発生しました:

[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/NSXMLParserPrematureDocumentEndError

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