XML-разбор для одной строки, которая содержит пробелы - PullRequest
1 голос
/ 20 апреля 2011

Мое приложение Android вызывает веб-метод .NET и возвращает одну строку.Я использую saxparser для синтаксического анализа одной строки, такой как:

<string xmlns="http://tempuri.org/">LOCAL NT AUTHORITY\NTLM Authentication Not in role Administrators</string>

и функция characters () в моем обработчике данных:

        public void characters(char ch[], int start, int length) {
        String chars = new String(ch, start, length);
        Log.v("characters", chars);
        chars = chars.trim();

        if (_inItem) {
            _data = chars;
        }
    }

Моя проблема в том, что когда я тестирую ее с веб-сервером 1, работает нормально, но с веб-сервером 2 возвращает пустую строку.

С веб-сервером 1 я увидел, что функция characters () вызывается только один раз, и она возвращает всю строку «LOCAL NT AUTHORITY \ NTLM Authentication Not in role Administrators».Отлично!

Но с веб-сервером 2 функция charaters () вызывается несколько раз и, наконец, возвращает пустую строку ..?

04-20 10:09:43.161: VERBOSE/characters(405): LOCAL
04-20 10:09:43.161: VERBOSE/characters(405): NT AUTHORITY\NTLM Authentication
04-20 10:09:43.161: VERBOSE/characters(405): Not in role Administrators
04-20 10:09:43.250: VERBOSE/endElement(405): string=0

Это про обработку пробелов?Что тут происходит?

В итоге я сменил функцию символов ():

public void characters(char ch[], int start, int length) {
    String chars = new String(ch, start, length);

    if (_inItem) {
        _data += chars;
    }
}

1 Ответ

0 голосов
/ 20 апреля 2011

Это то, как определяется интерфейс саксофона, может быть несколько обращений к символам, не ожидается, что вы получите все символы в одном элементе за один вызов.Если вам нужна вся строка в одном куске, ваша реализация должна собрать и объединить их вместе.

...