2014-10-06 2 views
0

У меня возникли проблемы с разбором и отображением информации из очень простого XML-файла.Android - анализ XML в ArrayList

Прежде всего, я храню xml-файл в папке res/xml. В папке У меня есть файл XML с именем jokes.xml, содержание файла выглядит следующим образом:

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <joke>This is a good joke.</joke> 
    <joke>This is a very nice good great joke.</joke> 
    <joke>Oh Yeah!</joke> 
</resources> 

Я хочу разобрать этот файл, сохраните все шутки в ArrayList и получают случайный друг показать. Мой код выглядит следующим образом:

public class MainActivity extends Activity { 

private TextView texto; 
private int i = 0; 
private String[] arrayJokes; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    texto = (TextView) findViewById(R.id.textView1); 

    XmlResourceParser joke = getResources().getXml(R.xml.jokes); 

    try { 
     while(joke.getEventType() != XmlResourceParser.END_DOCUMENT){ 
      if(joke.getEventType() == XmlResourceParser.START_TAG){ 
       String s = joke.getName(); 

       if(s.equals("joke")){ 
        arrayJokes[i] = joke.getAttributeValue(null, "joke"); 
        i++; 
       } 
      } 
     } 
    } catch (XmlPullParserException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

    //takes random id from the array 
    Random generator = new Random(); 
    int rnd = generator.nextInt(arrayJokes.length); 

    String j = arrayJokes[rnd]; 
    texto.setText(j); 

} 

} 

Проблема в том, что я получаю только пустую страницу. Любая идея о том, что я делаю неправильно?

Спасибо заранее, Cláudio

ответ

1

вы можете разобрать свои вещи шутки, как это:

private ArrayList<String> parseJokes() { 
      ArrayList<String> jokes = new ArrayList<String>(); 
      XmlResourceParser parser = getResources().getXml(R.xml.jokes); 


      try { 
       int eventType=parser.getEventType(); 
       while (eventType!=XmlPullParser.END_DOCUMENT) { 
        if(eventType==XmlPullParser.START_TAG){ 
         if (parser.getName().equals("joke")) { 
          jokes.add(parser.nextText()); 
         } 
        } 

        eventType= parser.next(); 
       } 
      } catch (XmlPullParserException | IOException e) { 
       Log.e("XmlPullParserException", e.toString()); 
      } 
      parser.close(); 
      return jokes; 
     } 

основная идея заключается в том, чтобы продвинуть анализатор через документ с помощью следующей() метод .

Смежные вопросы