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

XML parsing σε Android

Ερώτηση

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

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

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

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

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες

4 απαντήσεις σε αυτή την ερώτηση

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

  • 0

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

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • 0

Το 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

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες

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

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

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

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

Εγγραφείτε για έναν νέο λογαριασμό

Σύνδεση

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

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

Χρήσιμες πληροφορίες

Με την περιήγησή σας στο insomnia.gr, αποδέχεστε τη χρήση cookies που ενισχύουν σημαντικά την εμπειρία χρήσης.