Frage

Ok, ich bin wieder auf diese Aufgabe. Ich habe meine XML richtig von meinem Webserver herunterladen mit einer URL an den Server des Datei zeigt jedoch, wenn ich das Netzwerk ‚nicht erreichbar‘ erkenne ich einfach die URL verweisen auf meine Anwendung lokalen XML und ich bekomme die folgende Fehlermeldung (NB die Datei eine direkte Kopie des einen auf dem Server).

Ich kann nicht eine detaillierte Beschreibung finden, aber ich denke, es ist zu sagen, dass die URL zu einer unzugänglichen Stelle zeigt. Bin ich zu speichern, diese Ressource in der falschen Stelle? Ich glaube, ich mag es im Home-Verzeichnis / Library ??

Debug-Ausgabe

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.)
War es hilfreich?

Lösung 3

Laut Dave DeLong,

  

Das bedeutet, dass es Probleme Parsen Ihre Datei hat.

ich denke, es kann die XSLT-Referenz in der XML - wie es auf den Webserver verweist. Ich werde überprüfen und wieder auf diese Frage mit einer verbesserten Antwort.

Es war der Pfad der Datei. Mein Code war nicht einmal in der Nähe der richtigen Stelle - und ich war ein nachlauf Buchstaben ‚s‘ fehlt. Der Fehlercode Definition impliziert ein „vorzeitiges Ende der Datei“, das verursachte mir meine Datei ohne Erfolg zu verkürzen. Ich ging zurück zu den Wurzeln dann und iterativ auf dem Dateisystem für meine Datei zu suchen.

I ausgetestet durch die NSFileManager mit meiner Datei wiederholen und überprüft dann, dass es ladbar mit dem contentsAtPath Methode. Ich konnte es mit NSLog dump (). Einmal war ich davon überzeugt, dass die Datei war gut ausgebildet und in Rohform geladen, machte ich sicher, dass mein NSURL mit der gleichen Syntax und Methoden konstruiert. Dann lud er richtig. Jetzt kann ich entweder eine Netzwerk-Datei „voll funktionsfähigen“ Inhalt oder einen lokalen „Probe“ Inhalt laden.

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 );
    }
}

Output

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

P. S. Ich hoffe, mein persönliches Vertrauen ist hier ist hilfreich, um andere, wie sie ihre Datenverarbeitung debuggen.

Andere Tipps

In der gleichen Richtung wie die akzeptierten Antwort, ich hatte ein ähnliches Problem, weil ich meine Datei geladen wurde mit:

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

Stattdessen, das sein sollte:

[NSURL fileURLWithPath:pathToFile];

Ich habe zu lange schauen, wie meine Datei eingerichtet werden kann, nicht gut, fehlen könnte, etc, bevor Sie feststellen, dass es ein so einfacher feiner Unterschied war.

Die explaination von Apple ist: 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

Und die explaination des Fehlers ist:

NSXMLParserPrematureDocumentEndError

The document ended unexpectedly.

Available in Mac OS X v10.3 and later.

Declared in NSXMLParser.h.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top