1

私の Android アプリは .NET Web メソッドを呼び出しており、単一の文字列を返します。次のような単一の文字列を解析するために 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;
        }
    }

私の問題は、Webサーバー1でテストすると問題なく動作しますが、Webサーバー2では空の文字列が返されることです。

Web サーバー 1 では、characters() 関数が 1 回だけ呼び出され、"LOCAL NT AUTHORITY\NTLM Authentication Not in role Administrators" という文字列全体が返されるのを見ました。完全!

しかし、webserver 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

スペースの取り扱いについてですか?ここで何が起こっているのですか?

私は characters() 関数を変更してしまいました:

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

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

1 に答える 1

0

これは sax インターフェースの定義方法です。複数の文字を呼び出すことができます。1 回の呼び出しで 1 つの要素のすべての文字を取得できるとは想定されていません。文字列全体を 1 つにまとめる必要がある場合は、それらを収集して連結するのは実装次第です。

于 2011-04-19T22:34:08.790 に答える