1. surtic, 22.08.2011 #1
    surtic

    surtic Threadstarter Fortgeschrittenes Mitglied

    Guten Tag Zusammen,

    Ich bin zurzeit meine erste App am Entwickeln. Da ich mit Java noch nicht so erfahren bin stehe ich nun etwas an.

    Die Ausgangslage ist so das ich einen RSS Feed mit SAX XMLReader und einem ContentHandler Parse, aber danach komme ich nicht an die abgefüllten werte wieder ran.

    Ausschnitte aus dem Code:

    Hier der ContentHandler
    Code:
    public class RSSFeedContentHandler implements ContentHandler {
    	
    	protected String currentValue;
    	
    	protected RSSFeed rssFeed;
    	
    	protected ArrayList<RSSItem> rssItems = new ArrayList<RSSItem>();
    	protected RSSItem rssItem;
    	
    	protected Boolean insideItemElement = false;
    	
    	@Override
    	public void characters(char[] ch, int start, int length)
    			throws SAXException {
    		// TODO Auto-generated method stub
    		currentValue = new String(ch, start, length);
    	}
    	
    	@Override
    	public void startElement(String uri, String localName, String qName,
    			Attributes atts) throws SAXException {
    		
    		if ( localName.equals("channel") ){			
    			this.rssFeed = new RSSFeed();
    			
    		} else if ( localName.equals("item") ) {
    			this.insideItemElement = true;
    			this.rssItem = new RSSItem();
    			
    		}
    		
    	}
    
    	@Override
    	public void endElement(String uri, String localName, String qName)
    			throws SAXException {
    		
    		if ( insideItemElement == false ) {
    							
    			if ( localName.equals("title") ) {
    				this.rssFeed.setTitle(currentValue);
    				
    			} else if ( localName.equals("link") ) {
    				if ( this.rssFeed.getLink() == null ) {
    					this.rssFeed.setLink(currentValue);
    				}
    				
    			} else if ( localName.equals("description") ) {
    				this.rssFeed.setDescription(currentValue);
    				
    			} else if ( localName.equals("language")) {
    				this.rssFeed.setLanguage(currentValue);
    				
    			} else if ( localName.equals("pubDate")) {
    				this.rssFeed.setPubDate(currentValue);
    			}
    			
    		} else {
    			if ( localName.equals("item") ){
    				
    				if ( this.rssItem != null ) {
    					this.rssItems.add(this.rssItem);
    					
    				}
    			} else if ( localName.equals("title") ) {
    				this.rssItem.setTitle(currentValue);
    				
    			} else if ( localName.equals("description") ) {
    				this.rssItem.setDescription(currentValue);
    				
    			} else if ( localName.equals("pubDate") ) {
    				this.rssItem.setPubDate(currentValue);
    				
    			} else if ( localName.equals("channel") ){				
    				this.rssFeed.setItem(this.rssItems);
    				
    			}
    		}
    	}
    Und von hier aus wird er aufgerufen.
    Code:
    private void pars(InputSource in) throws SAXException, IOException {
    		
    		System.setProperty("org.xml.sax.driver","org.xmlpull.v1.sax2.Driver");
    		XMLReader xmlReader = XMLReaderFactory.createXMLReader();
    		xmlReader.setContentHandler(new RSSFeedContentHandler());
    		
    		xmlReader.parse(in);
    	}
    Nun krieg ich ja keinen Return wert über "xmlReader.parse(in);" aber um die Daten weiter aufzubereiten und auch für die Darstellung in einer View brauche ich ja die Daten :) also besser gesagt nur den "RSSFeed rssFeed" aus dem ContentHandler.

    Wie kriege ich das am besten hin? Natürlich kann ich mir auch vorstellen das ich irgend was übersehe :D

    Danke für eure Hilfe.
     
    Zuletzt bearbeitet: 22.08.2011
  2. ko5tik, 22.08.2011 #2
    ko5tik

    ko5tik Android-Experte

    Es gibt 2 Warianten:
    - du liest und verstehst einen Tutorial über SAX Parser, und ergänzst deinen ContentHandler mit einen getter fpr das was dich interesiert ( und speicherst dem ContentHandler in einer Instanzvariable, damit du es später zu hand hast)
    - du liest (und verstehst) einen Tutorial über Pull-Parser, dem es auch bei der Android gibt.
    - und das wichtigste: fang gar nicht über dem DOM-Parser nachzudenken %)
     
  3. surtic, 22.08.2011 #3
    surtic

    surtic Threadstarter Fortgeschrittenes Mitglied

    @ko5tik: Danke für die Hilfe :) ja weis gar nicht wieso ich nicht auf die Idee mit dem getter gekommen bin :D es ist glaube ich einfach zu heiss im Büro....

    Erledigt.
     
Die Seite wird geladen...
Ähnliche Themen Forum Datum
[ERLEDIGT] MPAndroidChart gruppiertes Barchart: Gruppentitel nicht über Gruppe Android App Entwicklung Freitag um 23:30 Uhr
[ERLEDIGT] Wie kann ich feststellen ob eine SD-Karte migriert wurde Android App Entwicklung Freitag um 13:42 Uhr
[ERLEDIGT] Speicherort verschwindet nach Änderung des Standardpfads in der Systemeinstellung Android App Entwicklung 22.06.2017
[ERLEDIGT] Admob-Einstellungen Android App Entwicklung 20.06.2017
[ERLEDIGT] Eine art Dropbox Android App Entwicklung 20.06.2017
[ERLEDIGT] StartActivityForResult von OpenGL aus. Android App Entwicklung 19.06.2017
[ERLEDIGT] Notification sendet eher zufällig als festgelegt Android App Entwicklung 19.06.2017
[ERLEDIGT] RFID Karten Kommunikation? Android App Entwicklung 18.06.2017
[ERLEDIGT] Kleine Probleme mit einer App Android App Entwicklung 14.06.2017
[ERLEDIGT] APK erstellen Android App Entwicklung 11.06.2017
Du betrachtest das Thema "[Erledigt]SAX XMLReader Parse" im Forum "Android App Entwicklung",