NSXMLParserErrorDomainエラー5の意味は何ですか?
-
05-07-2019 - |
質問
さて、私はこの仕事に戻りました。サーバーのファイルを指す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];
あまりにも単純な微妙な違いであることに気づく前に、ファイルの形式が正しくない、欠落しているなどを調べるのに長い時間を費やしました。
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.