Sax - ExpatParser$ParseException
Mache ich eine Android-Anwendung liest eine XML-Internet. Diese Anwendung verwendet SAX um XML zu Parsen. Das ist mein code für den Teil der Analyse:
public LectorSAX(String url){
try{
SAXParserFactory spf=SAXParserFactory.newInstance();
SAXParser sp = spf.newSAXParser();
DefaultHandler lxmlr=new LibraryXMLReader() ;
sp.parse(url, lxmlr);
nodo=((LibraryXMLReader)lxmlr).getNodoActual();
}catch(ParserConfigurationException e){
System.err.println("Error de parseo en LectorSAX.java: "+e);
}catch(SAXException e){
System.err.println("Error de sax LectorSAX.java: " + e);
} catch (IOException e){
System.err.println("Error de io LectorSAX.java: " + e);
}
}
Das problem ist, dass SAXException Auftritt. Die Ausnahmemeldung lautet wie folgt:
org.apache.Harmonie.xml.ExpatParser$ParseException: At line 4, column
42: not well-formed (invalid token)
Jedoch, wenn ich den gleichen code in einem normalen Java-SE-Anwendung, diese Ausnahme tritt nicht auf, und alles funktioniert einwandfrei.
Warum der gleiche code funktioniert in einer Java-SE-Anwendung nicht ein Android?. Auf der anderen Seite, Wie das problem zu lösen?.
Danke für die Hilfe.
Grüße.
- Kann u Aktie ur xml ... und pro Fehler gibt es ein problem mit ur xml ..
- Aber, warum der gleiche code funktioniert in einer Java-SE-Anwendung nicht ein Android?. Dies ist die URL: aemet.es/xml/municipios/localidad_33002.xml
- ursprüngliche dachte ich, dass es ein problem gibt mit ur xml als pro Fehler .. aber nicht so ... jetzt nur noch die Lösung mit u ist, dass u Debuggen, analysieren
- Vielleicht hat das etwas zu tun mit der Kodierung ? Verwenden Sie UTF-8 ? Ich weiß nicht, die Besonderheiten von Android.
- Ich habe nicht angegebenen Codierung. Ich habe nicht angegebenen Codierung. Ist es notwendig bei Android?, Es scheint, dass Java nicht erforderlich.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Könnte dies ein character encoding problem.
Wie Sie sehen können, wird die invalid-token Fehler Punkte auf der Linie 4.
In dieser Zeile finden Sie eine akute (Meteorología) und eine tilde (España).
Der XML-header zeigt eine ISO-8859-15 encoding-Wert. Denn es ist weniger verbreitet als die UTFs oder ISO-8859-1 Kodierung, dies könnte zu einem Fehler, wenn der SAXParser verbindet und zu versuchen zu konvertieren, die byte-Inhalte in die chars mit Ihrem system default charset.
Dann müssen Sie sagen, der SAXParser welchen Zeichensatz zu verwenden. Eine Möglichkeit, dies zu tun, ist die übergabe eines InputSource, anstatt der URL, zu der parse-Methode. Als Beispiel:
EDIT:
Es scheint, dass die Android-VM diese Kodierung nicht unterstützt, werfen Sie eine
org.apache.harmony.xml.ExpatParser$ParseException: At line 1, column 0: unknown encoding
Ausnahme.Als ISO-8859-15 es ist vor allem kompatibel mit ISO-8859-1, ausgenommen einiger bestimmter Zeichen (wie Sie sehen können hier), eine Lösung ist das ändern der
ISO-8859-15
WertISO-8859-1
bei der Methode setEncoding, zwingt den parser zu verwenden, die eine unterschiedliche, aber kompatible charset-encoding:Wie es scheint, wie Android nicht unterstützt, ist der deklarierte Zeichensatz, verwendet es die Standard (UTF-8) und damit der parser kann nicht in der XML-Deklaration zu wählen, die apropiate Codierung.
InputSource
. In diesem Fall, irgendeine Idee?