Προς το περιεχόμενο

XML parsing σε Android


sarakinos

Προτεινόμενες αναρτήσεις

Καλησπέρα παιδιά , προσπαθώ εδώ και καιρό να καταλάβω πως υλοποιείται το xml parsing σε Android προσπαθώντας να φτιάξω μια πολύ απλή εφαρμογή που παίρνει ένα rss feed και τραβάει κάποια δεδομένα.

Το πρόβλημά μου είναι ότι δεν μπορώ να καταλάβω πως δουλεύει καμιά από τις τεχνικές που είδα στα διάφορα tutorials (SAX,XmlPullParser).

Θα ήθελα κάποιος να μου εξηγήσει πως γίνεται σε όσο πιο απλό και κατανοητό τρόπο μπορεί.

Ευχαριστώ εκ τον προτέρων.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Στον τρόπο που λειτουργούν οι parsers στον Android και γενικότερα στην Java.Έχω βρει διάφορα snippets αλλά θέλω να καταλάβω τι κάνουν και να μην κάνω απλά ένα copy & paste.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Το SAX είναι λιγο παραξενο, επειδη ειναι event based, οποτε παμε ενα παραειγμα με το DOM API.

  1. Αρχικα δημιυοργουμε ενα αντικειμενο DocumentBuilderFactory το οποιο θα διαβασει το XML και θα μας δημιουργισει ενα αντικειμενο Document
    >
    private void parseXmlFile(){
    
     DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
    
     try {
    
       DocumentBuilder db = dbf.newDocumentBuilder();
    
       //parse using builder to get DOM representation of the XML file
       dom = db.parse("MyFile.xml");
    
     }catch(ParserConfigurationException pce) {
       pce.printStackTrace();
     }catch(SAXException se) {
       se.printStackTrace();
     }catch(IOException ioe) {
       ioe.printStackTrace();
     }
    }
    


  2. Mετα διαβαζουμε το root element του αρχειου και επαναληπτικα διαβαζουμε καθε εσωτερικο κομβο με τα attributes του
    >
    private void parseDocument(){
     //get the root elememt
     Element docEle = dom.getDocumentElement();
    
     //get a nodelist of "ΜyTag" elements
     NodeList nl = docEle.getElementsByTagName("MyTag");
     if(nl != null) {
       for(int i = 0 ; i < nl.getLength();i++) {
    
      //get the element
      Element el = (Element)nl.item(i);
    
      //here you get the attributes
      String attr = el.getAttribute("MyAttr");
       }
     }
    }
    


Παρατηρησεις:

αν το MyTag εχει κι αυτο εσωτερικους κομβους, κανεις την ιδια διαδικασια (μεσα στο loop των MyTag)

αν το MyAttr ειναι πχ int καλεις την μεθοδο parseInt της κλασης Integer

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...