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;
        }
    }

我的问题是,当我使用 webserver 1 测试它时,它工作正常,但使用 webserver 2 它返回空字符串。

使用 webserver 1,我看到 characters() 函数只被调用一次,它返回整个字符串“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 接口的定义方式,可以对字符进行多次调用,并不期望您会在一次调用中获得单个元素中的所有字符。如果您需要将整个字符串组合在一起,则由您的实现来收集并将它们连接在一起。

于 2011-04-19T22:34:08.790 回答