2011-03-30 4 views
0

Je suis en train d'analyser un fichier XML comme ci-dessousComment analyser un fichier XML dans une application Android

<Subject> 
    <chapter> 
     <Question>abc</Question> 
     <answer>avksn</answer> 
    </chapter> 
    <chapter> 
     <Question>def</Question> 
     <answer>avksn</answer> 
    </chapter> 
    <chapter> 
     <Question>ccsv</Question> 
     <answer>avksn</answer> 
    </chapter> 
</Subject> 

dans ce que je suis en mesure de compter le nombre de chapitre. le nombre de chapitre est égal au nombre de questions et de réponses. J'ai également placé un bouton nommé comme ok dans ma mise en page.

maintenant je veux afficher la première question et après avoir cliqué sur ok je veux afficher la deuxième question et il va jusqu'à la fin. Quand j'ai atteint la dernière question, je veux passer à une nouvelle activité.

comment effectuer cela, merci de me aider

Répondre

1

Lire le xml dans un InputStream puis:

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 
DocumentBuilder db = dbf.newDocumentBuilder(); 
doc = db.parse([the InpuTstream]); 

Ensuite, vous pouvez utiliser comme doc:

if(doc.getElementsByTagName("GeometryCollection").getLength()>0){ 
    org.w3c.dom.Node parent_node = doc.getElementsByTagName("GeometryCollection").item(0); 
    NodeList nl = parent_node.getChildNodes(); 
    for(int i = 0;i<nl.getLength();i++){ 
    ... 
1

Lire le XML dans un document (v = la chaîne xml)

public Document XMLfromString(){ 

    Document doc = null; 

    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 
    try { 

     DocumentBuilder db = dbf.newDocumentBuilder(); 

     InputSource is = new InputSource(); 
     is.setCharacterStream(new StringReader(v)); 
     doc = db.parse(is); 

    } catch (ParserConfigurationException e) { 
     e.printStackTrace(); 
    } catch (SAXException e) { 
     System.out.println("Wrong XML file structure: " + e.getMessage()); 
     return null; 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

    return doc; 

} 

obtenez alors l'élément comme ceci:

/** Returns element value 
    * @param elem element (it is XML tag) 
    * @return Element value otherwise empty String 
    */ 
public final static String getElementValue(Node elem) { 
    Node kid; 
    if(elem != null){ 
     if (elem.hasChildNodes()){ 
      for(kid = elem.getFirstChild(); kid != null; kid = kid.getNextSibling()){ 
       if(kid.getNodeType() == Node.TEXT_NODE ){ 
        return kid.getNodeValue(); 
       } 
      } 
     } 
    } 
    return ""; 
} 

Comment utiliser:

Document doc = x.XMLfromString(); 
NodeList nodes = doc.getElementsByTagName("result"); 

    for (int i = 0; i < nodes.getLength(); i++) {       
     HashMap<String, String> map = new HashMap<String, String>();  

     Element e = (Element)nodes.item(i); 
     map.put("id", x.getValue(e, "orgid")); 
     map.put("bedrijf", x.getValue(e, "naam")); 
     map.put("plaats", x.getValue(e, "plaats")); 
     mylist.add(map);    
    } 
Questions connexes