2010-08-16 6 views

Répondre

2

Vous analyser XML sur Android comme vous le feriez en Java ordinaire. Vous avez les deux paquets org.w3c.dom et disponibles dans Android. Utilisez celui qui correspond le mieux à vos besoins, il y a beaucoup de tutoriels pour les deux disponibles sur Internet.

-1
  1. Obtenir le contenu XML en faisant requête HTTP

    public String getXmlFromUrl(String url) { 
        String xml = null; 
    
        try { 
         // defaultHttpClient 
         DefaultHttpClient httpClient = new DefaultHttpClient(); 
         HttpPost httpPost = new HttpPost(url); 
    
         HttpResponse httpResponse = httpClient.execute(httpPost); 
         HttpEntity httpEntity = httpResponse.getEntity(); 
         xml = EntityUtils.toString(httpEntity); 
    
        } catch (UnsupportedEncodingException e) { 
         e.printStackTrace(); 
        } catch (ClientProtocolException e) { 
         e.printStackTrace(); 
        } catch (IOException e) { 
         e.printStackTrace(); 
        } 
        // return XML 
        return xml; 
    } 
    
  2. Parsing contenu XML et obtenir l'élément DOM

    public Document getDomElement(String xml) { 
        Document doc = null; 
        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 
        try { 
    
         DocumentBuilder db = dbf.newDocumentBuilder(); 
    
         InputSource is = new InputSource(); 
          is.setCharacterStream(new StringReader(xml)); 
          doc = db.parse(is); 
    
         } catch (ParserConfigurationException e) { 
          Log.e("Error: ", e.getMessage()); 
          return null; 
         } catch (SAXException e) { 
          Log.e("Error: ", e.getMessage()); 
          return null; 
         } catch (IOException e) { 
          Log.e("Error: ", e.getMessage()); 
          return null; 
         } 
          // return DOM 
         return doc; 
        } 
    
  3. Obtenez chaque valeur de l'élément enfant xml en passant le nom de noeud élément

    public String getValue(Element item, String str) { 
        NodeList n = item.getElementsByTagName(str); 
        return this.getElementValue(n.item(0)); 
    } 
    
    public final String getElementValue(Node elem) { 
        Node child; 
        if (elem != null) { 
         if (elem.hasChildNodes()) { 
          for (child = elem.getFirstChild(); child != null; child = child.getNextSibling()) { 
           if (child.getNodeType() == Node.TEXT_NODE) { 
            return child.getNodeValue(); 
           } 
          } 
         } 
        } 
        return ""; 
    } 
    
+0

Bienvenue sur Stack Overflow! Merci d'avoir posté votre réponse! Veuillez vous assurer de lire attentivement la [FAQ sur l'autopromotion] (http://stackoverflow.com/faq#promotion). Notez également qu'il est * obligatoire * que vous publiez une clause de non-responsabilité chaque fois que vous créez un lien vers votre propre site/produit. –