2012-07-29 16 views
5

Estoy usando la ruta de mapa de google para mi propia aplicación de Android. Hace 2 días funcionó bien, pero después de eso, cuando la aplicación se ejecuta, me da errores a través de logcat. ¿Puede algún cuerpo decirme una razón y una solución para este problema?Error de referencia de entidad no terminada

org.xml.sax.SAXParseException: unterminated entity ref (position:ENTITY_REF &@1:799 in [email protected]) 

private String[] getDirectionData(String sourceLat, String sourceLong, String destinationLat, String destinationLong) { 


String urlString = "http://maps.google.com/maps?f=d&hl=en&" +"saddr="+sourceLat+","+sourceLong+"&daddr="+destinationLat+","+destinationLong + "&ie=UTF8&0&om=0&output=kml"; 
Log.d("URL", urlString); 
Document doc = null; 
HttpURLConnection urlConnection = null; 
URL url = null; 
String pathConent = ""; 

try { 

    url = new URL(urlString.toString()); 
    urlConnection = (HttpURLConnection) url.openConnection(); 
    urlConnection.setRequestMethod("GET"); 
    urlConnection.setDoOutput(true); 
    urlConnection.setDoInput(true); 
    urlConnection.connect(); 
    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 
    DocumentBuilder db = dbf.newDocumentBuilder(); 
    doc = db.parse(urlConnection.getInputStream()); 

} catch (Exception e) { 

    Log.w("Error in google map",e); 
} 

NodeList nl = doc.getElementsByTagName("LineString"); 
for (int s = 0; s < nl.getLength(); s++) { 
    Node rootNode = nl.item(s); 
    NodeList configItems = rootNode.getChildNodes(); 
    for (int x = 0; x < configItems.getLength(); x++) { 
    Node lineStringNode = configItems.item(x); 
    NodeList path = lineStringNode.getChildNodes(); 
    pathConent = path.item(0).getNodeValue(); 
    } 
} 
String[] tempContent = pathConent.split(" "); 
return tempContent; 
} 
+0

añadir un poco de su código y dirección de la imagen a su pregunta – hasanghaforian

+0

oh, encontrado respuesta perfecta en este foro [Enlace a la respuesta a juego] [1] [1]: http://stackoverflow.com/questions/11745314/why-retrieving-google-directions -for-android-using-kml-data-is-not-working-anymo – 2red13

Respuesta

0

El mensaje de error es bastante sugerente: La etiqueta ref es sin terminar, por ejemplo, el <ref> no tiene un par de </ref> adjunto. Valide su entrada XML con una herramienta como this.

+1

no es útil, el problema es claro, pero la respuesta es validada por google y el código es de hecho no funciona desde junio. Estoy buscando el mismo problema – 2red13

+0

@ 2red13 ¿Cuál es su opinión sobre mi respuesta? – 10101010

1

No lo sé, pero creo que es porque la salida = kml ya no está disponible, muchos usuarios tienen problemas con ella.

+0

http://stackoverflow.com/questions/11745314/why-retrieving-google-directions-for-android-using-kml-data-is-not-working-anymo – 2red13

+0

si escribe un enlace en su navegador, el kml La cosa simplemente funciona bien. Esto sugiere que hay algún problema con la codificación. Estoy enfrentando el mismo problema, el mismo código, pero no estaba seguro si dio una salida algunos días antes. – 10101010

0

Yo mismo estaba enfrentando el mismo problema. Esta excepción viene porque algunos elementos importantes de KML han sido obsoletos por Google recientemente. Por ejemplo, refiérase a GeometryCollection. Si su código intenta encontrar dichos elementos en el documento recibido, podría arrojar una SAXParseException: entidad sin terminación ref.

Han introducido una nueva API para Maps. Está disponible here.

Yo mismo descargué el archivo kml y lo almacené en el dispositivo. Cuando lo eché un vistazo al usando el editor, no encontré el elemento que mi código estaba buscando. Sin embargo, si usa el archivo kml para encontrar una ruta en la última versión de Chrome, funciona.

7

En mi caso, este problema apareció en un archivo .png dentro de la carpeta/res/drawable. Es un error, y se informó here. Entonces, para referencia futura, si lo enfrentas en un dibujable, échale un vistazo. Para resumir, actualice su ADT a, al menos, la versión 21.0.1.

+9

Su problema se puede resolver limpiando la compilación de su proyecto (Proyecto | Limpiar ... | y seleccione su proyecto para limpiar). – Aryo

+0

Gracias, esto me ayudó. Si el proyecto limpio no funciona, intente abrir un archivo .png haciendo clic derecho y seleccione "abrir con - in place editor". Después de cerrar la ventana del editor, los errores desaparecieron. –

0

Tengo el mismo problema. Estaba en un archivo de imagen .png. El problema ocurrió después de que edité el archivo. Busqué la solución, pero después de eso, limpié mi proyecto usando la opción "limpiar ..." en la pestaña "proyecto". Así que finalmente me deshice de que "

2

me he encontrado con el mismo problema. Después de la depuración, encontré que fue causada por el '&' carácter. Cabe escapó

+0

Tuve el mismo problema, reemplacé & por & en mi xml lo resolví, gracias –

+0

Cuando no estoy publicando una cadena con "&" todo está bien. Mi problema es cómo puedo escapar del personaje en Java antes de enviar la solicitud. – TWeeKeD

Cuestiones relacionadas