Problema al analizar cadena xml en java

Estoy escribiendo una aplicación android, y me gustaría obtener una cadena xml de la web y obtener toda la información que contiene. En primer lugar, obtengo la cadena (este código funciona):

URL url = new URL("here my adrress"); BufferedReader reader = new BufferedReader(new InputStreamReader(url.openStream())); String myData = reader.readLine(); reader.close(); 

Entonces, yo uso DOM:

 DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = dbf.newDocumentBuilder(); InputSource is = new InputSource(); is.setCharacterStream(new StringReader(myData)); 

Todavía no hay problema. Cuando escribo

 Document doc = db.parse(is); 

la aplicación no hace nada más. Se detiene, sin errores. ¿Puede alguien decirme por favor qué está pasando?

No sabría porqué su código no trabaja puesto que no hay error pero puedo ofrecer alternativas.

En primer lugar, estoy seguro de que su nuevo InputStream "es" es innecesario. "parse ()" puede tomar "url.openStream ()" o "myData" directamente como argumento.

Otra causa de error podría ser que sus datos XML tienen más de una línea (sé que usted dijo que la primera parte de su código funcionó, pero prefiero mencionarlo, sólo para estar seguro). Si es así, "reader.readLine ()" solo te proporcionará una parte de tus datos xml.

Espero que esto sea de ayuda.

Utilice SAXParser en lugar de analizador de DOM. SAXParser es más eficiente que el analizador de DOM. Aquí hay dos buenos tutoriales sobre SAXParser 1. http://www.androidpeople.com/android-xml-parsing-tutorial-using-saxparser 2. http://www.anddev.org/parsing_xml_from_the_net_-_using_the_saxparser-t353.html

Utilizar XmlPullParser , es muy rápido. Pase en la cadena de la web y obtener una tabla de valores con todos los valores.

 public Hashtable<String, String> parse(String myData) { XmlPullParser parser = Xml.newPullParser(); Hashtable<String, String> responseFromServer = new Hashtable<String, String>(); try { parser.setInput(new StringReader (responseString)); int eventType = parser.getEventType(); while (eventType != XmlPullParser.END_DOCUMENT) { if(eventType == XmlPullParser.START_TAG) { String currentName = parser.getName(); String currentText = parser.nextText(); if (currentText.trim().length() > 0) { responseFromServer.put(currentName, currentText); } } eventType = parser.next(); } } catch (Exception e) { e.printStackTrace(); } return responseFromServer; } 
  • Cómo configurar la altura máxima de un Layout en android?
  • XML Lista de permisos de Android completa
  • Establecer el estilo de fuente en negrita del menú de la barra de herramientas appcompat
  • ¿Cómo usar la vista propia en el diseño?
  • ¿Qué significa esto "xmlns: xliff"? XML
  • Botón con el icono izquierdo y el texto perfectamente alineados
  • El fondo xml no cambia cuando uso la tableta
  • Android utilizando diseños como una plantilla para crear múltiples instancias de diseño
  • Analizar XML desde un sitio web a un dispositivo Android
  • Error del proyecto AIDE y Eclipse
  • Botón personalizado en la barra de título del cuadro de diálogo
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.