El código que has puesto me funciona perfectamente, salvo quizás porque no cierras al final los flujos
paginaHtml.close(); pw.flush(); pw.close(); con esto el firefox lo abre perfectamente, da un mensaje de "Este fichero XML no parece tener ninguna información de estilo asociada. Se muestra debajo el árbol del documento." y muestra el árbol de forma perfecta. De todas formas, si simplemente vas a descargar, este código es mucho más sencillo (y no te tienes que pelear con las codificaciones, simplemente descargas) String lugar = "madrid"; URL u = new URL( "http://gazetteer.openstreetmap.org/namefinder/search.xml?find=<" + lugar + ">&max=20&any=1"); URLConnection s = u.openConnection(); BufferedInputStream bis = new BufferedInputStream(s.getInputStream()); BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("lugares.osm")); byte[] buffer = new byte[1024]; int leidos = 0; while ((leidos = bis.read(buffer))> 0){ bos.write(buffer,0,leidos); } bos.flush(); bos.close(); bis.close(); El jue, 19-02-2009 a las 08:00 -0800, konan1986 escribió: > Antes de nada, gracias a los dos por la ayuda..pero todavia no soy capaz.. > He modificado el codigo para llegar a: > String lugar="madrid"; > URL u = new > URL("http://gazetteer.openstreetmap.org/namefinder/search.xml?find=<" + > lugar + ">&max=20&any=1"); > URLConnection s = u.openConnection(); > System.out.println(u.getFile()); > //Leer la página > BufferedReader paginaHtml; > paginaHtml = new BufferedReader(new > InputStreamReader(u.openStream(),"UTF8")); > > > FileOutputStream fichero = null; > PrintWriter pw = null; > > > fichero=new FileOutputStream("directorio" + "\\" + > "lugares.osm"); > pw = new PrintWriter(new OutputStreamWriter(fichero, "UTF8")); > > String cadena=""; > while ((cadena = paginaHtml.readLine()) != null) { > pw.println(cadena.toString()); > System.out.println(cadena); > > } > > Y me sigue creando el archivo xml mal, internet Explorer no me lo abre y > Mozilla lo hace pero dandome un error..A ver si podeis ver algo. > Gracias otra vez > > > > > Alberto Fernández wrote: > > > > Creo que vienen en UTF-8, asi que a la hora de leerlos: > > > > paginaHtml = new BufferedReader(new > > InputStreamReader(u.openStream(), "UTF-8")); > > > > Pasarle el charset como segundo parámetro al InputStreamReader (ahora > > mismo no se si le gustará más "UTF-8" o "utf8") > > > > y para escribirlo: > > > > pw = new PrintWriter(new OutputStreamWriter(fichero, "UTF-8")); > > > > Espero que te sirva. > > > > De todas formas, si vas a leer y escribir directamente sin leer nada, > > mejor que uses BufferedInputStream y BufferedOutputStream directamente, > > olvidandote de los charsets. > > > > El lun, 16-02-2009 a las 23:40 +0100, Iván Sánchez Ortega escribió: > >> El Lunes, 16 de Febrero de 2009, konan1986 escribió: > >> > Pues la verdad es que no lo sé..lo unico que hago es lo que pongo de > >> > codigo..no sé muy bien como tratar el texto de las formas que > >> dices..como > >> > podria ponerlo?? y cual deberia usar? > >> > >> Depende del parser de XML que uses... Fíjate si en la cabecera de tu XML > >> va un > >> <?xml encoding='UTF-8'?> o algo por el estilo. Mira si tu párser de XML > >> reconoce esa etiqueta, y/o le puedes forzar una codificación (no sé cómo > >> se > >> hace en Java). > >> > >> Todo lo que viene de OSM debería ser UTF-8 bien formado, salvo error. > >> > >> En el peor de los casos, creo que podrías usar "tidy" para pasar los > >> caracteres no-ascii a entidades de XML, pero ahora mismo no sé cómo se > >> haría. > >> > >> > >> > >> _______________________________________________ > >> Talk-es mailing list > >> Talk-es@openstreetmap.org > >> http://lists.openstreetmap.org/listinfo/talk-es > > > > > > _______________________________________________ > > Talk-es mailing list > > Talk-es@openstreetmap.org > > http://lists.openstreetmap.org/listinfo/talk-es > > > > > _______________________________________________ Talk-es mailing list Talk-es@openstreetmap.org http://lists.openstreetmap.org/listinfo/talk-es