5

好的,我回来做这个任务了。我从我的网络服务器正确下载了我的 XML,其 URL 指向服务器的文件,但是,当我检测到网络“无法访问”时,我只需将 URL 指向我的应用程序的本地 XML,然后我收到以下错误(注意文件是服务器上的直接副本)。

我找不到详细描述,但我认为这是说 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] 哇!它没有用。错误域 = NSXMLParserErrorDomain 代码 = 5“操作无法完成。(NSXMLParserErrorDomain 错误 5。)”
2009-10-14 22:08:17.270 MyApp[288:207] 操作无法完成。(NSXMLParserErrorDomain 错误 5。)
4

3 回答 3

15

与接受的答案相同,我遇到了类似的问题,因为我正在使用以下方式加载文件:

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

相反,应该是:

[NSURL fileURLWithPath:pathToFile];

在意识到这是一个如此简单的细微差别之前,我也花了很长时间查看我的文件可能格式不正确、可能丢失等。

于 2010-11-27T13:37:33.577 回答
7

苹果的解释是: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.
于 2010-05-02T21:01:56.033 回答
4

根据戴夫·德隆的说法,

这意味着它在解析文件时遇到问题。

我认为它可能是 XML 中的 XSLT 引用——因为它指向网络服务器。我将回顾并以改进的答案回到这个问题。

这是文件的路径。我的代码甚至没有靠近正确的位置——而且我错过了一个尾随字母“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我希望我在这里的明确说明对其他人调试数据处理有帮助。

于 2009-10-22T03:32:25.103 回答