Analizar XML desde un sitio web a un dispositivo Android

Estoy empezando una aplicación de Android que analizar XML de la web. He creado algunas aplicaciones de Android, pero nunca han implicado el análisis de XML y me preguntaba si alguien tenía algún consejo sobre la mejor manera de hacerlo?

He aquí un ejemplo:

try { URL url = new URL(/*your xml url*/); URLConnection conn = url.openConnection(); DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); Document doc = builder.parse(conn.getInputStream()); NodeList nodes = doc.getElementsByTagName(/*tag from xml file*/); for (int i = 0; i < nodes.getLength(); i++) { Element element = (Element) nodes.item(i); NodeList title = element.getElementsByTagName(/*item within the tag*/); Element line = (Element) title.item(0); phoneNumberList.add(line.getTextContent()); } } catch (Exception e) { e.printStackTrace(); } 

En mi ejemplo, mi archivo XML se parece un poco a:

 <numbers> <phone> <string name = "phonenumber1">555-555-5555</string> </phone> <phone> <string name = "phonenumber2">555-555-5555</string> </phone> </numbers> 

Y yo reemplazaría /*tag from xml file*/ con "phone" y /*item within the tag*/ con "string".

Siempre uso las clases de dom de w3c. Tengo un método auxiliar estático que utilizo para analizar los datos del xml como cadena y me devuelve un objeto del documento. Donde obtiene los datos xml puede variar (web, archivo, etc), pero finalmente se carga como una cadena.

algo como esto…

  Document document = null; DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder; try { builder = factory.newDocumentBuilder(); InputSource is = new InputSource(new StringReader(data)); document = builder.parse(is); } catch (SAXException e) { } catch (IOException e) { } catch (ParserConfigurationException e) { } 

Hay diferentes tipos de mecanismos de análisis disponibles, uno es SAX Aquí está el ejemplo de análisis de SAX , el segundo es el análisis de DOM Aquí está el ejemplo de DOM Parsing. . De su pregunta no está claro lo que quiere, pero estos pueden ser buenos puntos de partida.

Hay tres tipos de análisis que conozco: DOM, SAX y XMLPullParsing.

En mi ejemplo aquí necesitas la URL y el nodo padre del elemento XML.

 try { URL url = new URL("http://www.something.com/something.xml"); DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = dbf.newDocumentBuilder(); Document doc = db.parse(new InputSource(url.openStream())); doc.getDocumentElement().normalize(); NodeList nodeList1 = doc.getElementsByTagName("parent node here"); for (int i = 0; i < nodeList1.getLength(); i++) { Node node = nodeList1.item(i); } } catch(Exception e) { } 

También prueba esto .

Yo usaría el analizador de DOM, no es tan eficiente como SAX, si el archivo XML no es demasiado grande, ya que es más fácil en ese caso.

He hecho sólo una aplicación Android, que implicaba el análisis XML. XML recibido de un servicio web SOAP. Utilicé XmlPullParser. La implementación de Xml.newPullParser () tenía un error en el que las llamadas a nextText () no siempre avanzaban a END_TAG como la documentación prometida. Hay un trabajo alrededor para esto.

  • Buen constructor de interfaz de usuario para Android
  • Error del proyecto AIDE y Eclipse
  • Android: ¿De dónde proviene el permiso "System tools"?
  • Carrera que no se superpone a la forma
  • Cómo subrayar el texto del botón en Android?
  • Android Hexágono forma botón que tiene hexágono táctil
  • Obligar a un botón a permanecer en la parte inferior de la pantalla del teléfono
  • Botón personalizado en la barra de título del cuadro de diálogo
  • No se encontró ningún recurso en el archivo XML de diseño android
  • Color del borde del botón de Android
  • Establecer el estilo de fuente en negrita del menú de la barra de herramientas appcompat
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.