Warum löst dieser Code weiterhin die SaxParseException aus: "" PI darf nicht mit xml beginnen "?

8

Dieser Code wird verwendet, um ein XML-Dokument aus seiner String-Repräsentation zu generieren. Es funktioniert gut in meinen kleinen Komponententests, aber scheitert in meinen tatsächlichen XML-Daten. Die Zeile, in der es ausgelöst wird, ist Document doc = db.parse(is);

Irgendwelche Ideen?

%Vor%     
Kurru 14.02.2011, 01:33
quelle

6 Antworten

16

Vielen Dank für Ihre Hilfe.

Ich habe die <?xml version="1.0" encoding="utf-8"?> verworfen, die diesen Fehler behoben hat. Verstehe immer noch nicht, was der Grund dafür sein könnte, aber es hat trotzdem funktioniert.

Ich fuhr fort, einen meiner gepufferten Schreiber zu finden (beim Extrahieren aus einer Zip-Datei in den Speicher) wurde nicht geleert, was dazu führte, dass der XML-String unvollständig war.

Danke für Ihre Hilfe!

    
Kurru 14.02.2011, 12:32
quelle
3

Sie können überprüfen, ob Ihre XML-Datei den Stücklistenkopf

hat     
shaobin0604 14.06.2011 15:49
quelle
3

Ich hatte das gleiche Problem beim Parsen von XML, das von PHP generiert wurde. Nachdem ich den ContentType-Header "text / xml" hinzugefügt habe, funktioniert es wie ein Zauber.

    
Timo Bakx 13.09.2011 22:09
quelle
2

wie @StaxMan sagte, entferne vorher unbekannte Zeichen

responseBody = responseBodyString (responseBody.IndexOf ("& lt;"));

    
jowett 07.07.2012 02:45
quelle
1

Dieses Problem wird auch dadurch verursacht, dass die Zeile & lt; ? xml version="1.0" encoding="UTF-8"? & gt; zusammen mit den XML-Daten in der gleichen Zeile ...

  

& lt; ? xml version="1.0"   encoding="UTF-8"? & gt; & lt; secciones & gt; & lt; Abschnitt & gt; & lt; ID & gt; 0 & lt; / id & gt; & lt; Nombre & gt; Portada & lt; feedURL & gt; http: //iphone.elnorte.com/libre/online07/a   ....

    
Jorgesys 13.07.2012 17:56
quelle
0

Sie sollten die Codierung der Datei überprüft haben, anstatt die XML-Zeile zu verwerfen.

Ich habe festgestellt, dass mein Eclipse (unter Windows) das gleiche Problem mit einer Ressource hatte, die als Unix-U8 codiert ist. Nach der Konvertierung in DOS-U8 ging der Fehler weg.

    
Saran 03.06.2012 13:09
quelle

Tags und Links