XMLPullParser возвращает только один элемент - PullRequest
0 голосов
/ 13 октября 2019

Я не смог разобрать мой XML-файл, он возвращает только один элемент вместо 4

Вот мой XML-файл

<Quizzs>
<Quizz type="A">...</Quizz>
<Quizz type="B">...</Quizz>
<Quizz type="C">...</Quizz>
<Quizz type="D">...</Quizz>
</Quizzs>

Он возвращает только последний "D"

        while (eventType != XmlPullParser.END_DOCUMENT) {
            var eltName: String? = null

            when (eventType) {
                XmlPullParser.START_TAG -> {
                    eltName = parser.name

                    if ("Quizzs" == eltName) {
                        currentQuizz = Quizz()
                        quizz.add(currentQuizz)
                    } else if (currentQuizz != null) {
                        if ("Quizz" == eltName) {
                            currentQuizz.type = parser.getAttributeValue(null, "type")
                        }

                    }
                }
            }

            eventType = parser.next()
        }

        printPlayers(quizz)
    }

1 Ответ

0 голосов
/ 13 октября 2019

Вам нужно .add() что-то к вашему currentQuizz для каждого "Quizz". С currentQuizz.type = ... вы просто перезаписываете каждый предыдущий "Quizz" текущим, поэтому вы получаете только последний, который равен D.

. Я думаю, что вас смущает ваш собственный код. Для тега "Quizzs" вы создаете объект Quizz() вместо объекта QuizzList() или что-то подобное. Именно для тега "Quizz" вы должны каждый раз создавать новый объект Quizz(). И тогда вы должны добавить этот объект в ваш QuizzList.

...