我的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;
}
}
我的问题是,当我使用网络服务器1进行测试时,它可以正常运行,但是对于网络服务器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;
}
}
答案 0 :(得分:0)
这就是定义sax接口的方式,可以有多个字符调用,不希望你在一次调用中获得单个元素中的所有字符。如果您需要将整个字符串整合在一起,那么可以根据您的实现来收集它们并将它们连接在一起。