2012-05-19 3 views
0

это первый раз, когда я пытаюсь разобрать XML-файл, поэтому мне нужно немного помочь понять, как получить всю необходимую мне информацию из строки xml в приложении для Android. Вот мой XML-строка:Android XmlPullParser parse asx file

<ASX VERSION="3.0"><TITLE>Hits80and90.Com</TITLE><ENTRY>  <TITLE>Hits 80s and 90s</TITLE>  <REF HREF= "http://server-uk3.radioseninternetuy.com:11168"/>  <AUTHOR>Hits80and90.Com</AUTHOR>  <Abstract>The Best Music On The Web</ABSTRACT>  </ENTRY></ASX> 

Как я могу получить всю информацию в <ENTRY> тегах, как название, ссылка и т.д.?

Спасибо за любую помощь!

ответ

0

Это то, что вы можете использовать, чтобы разобрать ваш XML-строки:

import java.io.IOException; 
import java.io.StringReader; 

import org.xmlpull.v1.XmlPullParser; 
import org.xmlpull.v1.XmlPullParserException; 
import org.xmlpull.v1.XmlPullParserFactory; 

import android.util.Log; 

public class AsxParser { 

    XmlPullParser xmlpullparser; 

    public void AscParser(){ 

    } 

    public void parsing(String url){ 
     try { 
      XmlPullParserFactory factory = XmlPullParserFactory.newInstance(); 
      factory.setNamespaceAware(true); 
      xmlpullparser = factory.newPullParser(); 
      xmlpullparser.setInput(new StringReader(url)); 

      int eventType = 0; 
      try { 
       eventType = xmlpullparser.getEventType(); 
      } catch (XmlPullParserException e) { 
       e.printStackTrace(); 
      } 
      while (eventType != XmlPullParser.END_DOCUMENT) { 

       parseTag(eventType); 
       try { 
        eventType = xmlpullparser.next(); 
       } catch (XmlPullParserException e) { 
        e.printStackTrace(); 
       } catch (IOException e) { 
        e.printStackTrace(); 
       } 
      } 


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

    void parseTag(int event){ 

     switch (event) { 

     case XmlPullParser.START_DOCUMENT: 
      Log.i("","START_DOCUMENT"); 
      break; 

     case XmlPullParser.END_DOCUMENT: 
      Log.i("","END_DOCUMENT"); 
      break; 
     case XmlPullParser.START_TAG: 
      Log.i("","START_TAG : "+xmlpullparser.getName()); 
      Log.i("","Attribute Name : "+xmlpullparser.getAttributeValue(null,"HREF")); 

      break; 

     case XmlPullParser.END_TAG: 
      Log.i("","END_TAG : "+xmlpullparser.getName()); 
      break; 

     case XmlPullParser.TEXT: 
      Log.i("","TEXT"); 
      String output = xmlpullparser.getText(); 
      Log.i("valuee : ",""+output); 
      break; 
     } 

    } 

} 
0

вы можете использовать парсер сакса, я написал небольшой фрагмент кода, чтобы показать вам, как получить заголовок в записи. Я не тестировал его, но я думаю, что это поможет вам разобрать XML-файл с помощью sax.

Вот код:

import javax.xml.parsers.SAXParserFactory; 
import org.xml.sax.Attributes; 
import org.xml.sax.SAXException; 
import org.xml.sax.helpers.DefaultHandler; 

public class SaxParserContent { 

public static void parse(String data) { 

    SAXParserFactory factory = SAXParserFactory.newInstance(); 
    SaxParserContent.HandlerContent handler = new HandlerContent(); 
    try { 
     SAXParser saxParser = factory.newSAXParser(); 
     saxParser.parse(new InputSource(new StringReader(data)), handler); 

    } catch (Throwable err) { 
    } 
} 

public static class HandlerContent extends DefaultHandler { 

    protected boolean inEntry = true; 
    protected boolean inTitle = true; 
    protected String title; 

    @Override 
    public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { 
     if (localName.equals("ENTRY")) { 
      inEntry = true; 
     } 
     if (inEntry == true && localName.equals("TITLE")) { 
      inTitle = true; 
     } 
    } 

    @Override 
    public void endElement(String uri, String localName, String qName) throws SAXException { 
     if (localName.equals("ENTRY")) { 
      inEntry = false; 
     } 
     if (inEntry == true && localName.equals("TITLE")) { 
      inTitle = false; 
     } 
    } 

    @Override 
    public void characters(char[] ch, int start, int length) throws SAXException { 
     if (inEntry == true && inTitle == true) { 
      title = new String(ch); 
     } 
    } 

    public String getTitle() { 
     return title; 
    } 
} 

}

Удачи!