Почему XmlPullParser не читает пустые строки на Android - PullRequest
1 голос
/ 29 февраля 2012

Я сериализую массив строк в XML, мой вывод:

<MyArray>
    <anyType xsi:type="xsd:string">testString</anyType>
    <anyType xsi:type="xsd:string"></anyType> // here is empty string, and I want it in output array
</MyArray>

Когда я пытаюсь десериализовать это обратно в массив с XMLPullParser, он создает массив только с одной строкой.Почему функция next () из XmlPullParser для второй строки возвращает только START_TAG и END_TAG без события TEXT?Есть ли обходной путь, чтобы получить пустую строку из этого XML?

1 Ответ

2 голосов
/ 29 февраля 2012

В соответствии с http://developer.android.com/reference/org/xmlpull/v1/XmlPullParser.html,, более конкретно, с документацией метода nextText () , вы получите:

Если текущим событием является START_TAG, то если следующим элементом является TEXT, товозвращается содержимое элемента или, если следующим событием является END_TAG, возвращается пустая строка, в противном случае выдается исключение.После успешного вызова этой функции парсер будет позиционироваться на END_TAG.Мотивация для этой функции состоит в том, чтобы позволить последовательно анализировать как пустые элементы, так и элементы с непустым содержимым.

Пример кода, который они предоставляют, работает хорошо, и в настоящее время я использую в своем коде что-то встроки:

mPullParser.nextTag();
mPullParser.require(XmlPullParser.START_TAG, null, tag);
final String text = mPullParser.nextText();
mPullParser.require(XmlPullParser.END_TAG, null, tag);

, который работает просто отлично, независимо от того, пустая строка или нет.Вы используете библиотеку org.xmlpull.v1.XmlPullParser?

...