如何在android中使用dom解析器解析xml?

问题描述:

这里是我的xml ..我想要得到apikey使用dom解析器...任何帮助将不胜感激..thanx。如何在android中使用dom解析器解析xml?

<user> 
    <company>My company</company> 
    <access-level nil="true"/> 
    <last-activity-at nil="true"/> 
    <api-key>here is my api key </api-key> 
    <email-address>[email protected]</email-address> 
    <id type="integer">42569</id> 
</user> 
+0

我能够解析,如果有很多 insid Ë ....我的意思是这样 ... ...

+0

感谢名单迪帕克但我找到了解决办法,并贴在下面的答案... –

+0

见下面借助完整的DOM解析器例如链接,XML解析源代码,可能会对你有帮助。 [使用DOM解析器进行XML解析](http://www.androidpeople.com/android-xml-parsing-tutorial-%E2%80%93-using-domparser) –

嘿朋友给我的解决方案如下。 。

try { 

     NodeList nodes = doc.getElementsByTagName("user"); 

     for (int i = 0; i < nodes.getLength(); i++) { 
      Element element = (Element) nodes.item(i); 

      NodeList assignee_ = element.getElementsByTagName("api-key"); 
      Element line = (Element) assignee_.item(0); 
      statuses=(Utility.getCharacterDataFromElement(line)); 

     } 

    } catch (Exception e) { 
     e.printStackTrace(); 
    } 

你可以去这个链接,它可以帮助

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; 
    } 

你更多的信息检查链接..

http://www.androidhive.info/2011/11/android-xml-parsing-tutorial/

我已经使用了解析XML在我的实际应用中,这里是我的方法

public class XMLParser { 
     // constructor 
       public XMLParser() { 

       } 

       /** 
       * Getting XML from URL making HTTP request 
       * @param url string 
       * */ 
       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; 
       } 

       /** 
       * Getting XML DOM element 
       * @param XML string 
       * */ 
       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 doc; 
       } 

       /** Getting node value 
        * @param elem element 
        */ 
       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 ""; 
       } 

       /** 
        * Getting node value 
        * @param Element node 
        * @param key string 
        * */ 
       public String getValue(Element item, String str) {  
         NodeList n = item.getElementsByTagName(str);   
         return this.getElementValue(n.item(0)); 
        } 




    } 

,并在主类我有这样的:

ArrayList<HashMap<String, String>> booksList = new ArrayList<HashMap<String, String>>(); 

     XMLParser parser = new XMLParser(); 
     String xml = parser.getXmlFromUrl(URL); // getting XML from URL 
     Document doc = parser.getDomElement(xml); // getting DOM element 

     NodeList nl = doc.getElementsByTagName(KEY_MAG); 
     // looping through all song nodes <song> 
     for (int i = 0; i < nl.getLength(); i++) { 
      // creating new HashMap 
      HashMap<String, String> map = new HashMap<String, String>(); 
      Element e = (Element) nl.item(i); 
      // adding each child node to HashMap key => value 
      map.put(KEY_ID, parser.getValue(e, KEY_ID)); 
      map.put(KEY_TITLE, parser.getValue(e, KEY_TITLE)); 
      map.put(KEY_CATG, parser.getValue(e, KEY_CATG)); 
      //map.put(KEY_AUTOR, "Auteur:"+parser.getValue(e, KEY_AUTOR)); 
      //map.put(KEY_PRICE, parser.getValue(e, KEY_PRICE)+"DT"); 
      map.put(KEY_PRICE, parser.getValue(e, KEY_PRICE)); 

      map.put(KEY_THUMB_URL, parser.getValue(e, KEY_THUMB_URL)); 

      // adding HashList to ArrayList 
      booksList.add(map); 
     } 

,这我瓦尔:

static final String URL = "http://192.168.1.100/vos_magazines1.xml"; 
static final String KEY_MAG = "item"; // parent node 
static final String KEY_ID = "id_mag"; 
static final String KEY_TITLE = "titre_mag"; 
static final String KEY_PRICE = "prix_mag"; 
static final String KEY_CATG = "cat_mag"; 
static final String KEY_THUMB_URL = "pic_mag"; 

希望我的代码给予帮助