经过调试,以下代码解析有时会有错:
InputStream inputStream = socket.getInputStream();
SaxParser1 parser = new SaxParser1(inputStream);
parser.parse();
如果发送方在发送后立即将socket关闭掉,接收方就可以得到正确解析的XML数据。但如果发送后socket不立即关闭掉,则上面的解析代码会在递归中不能跳出来(了解SAX解析原理的朋友可能知道),即无法运行到endDocument()这个方法,估计是解析器无法判断inputStream什么时候结束。
希望上面的分析对大家有帮助。
InputStream inputStream = socket.getInputStream();
SaxParser1 parser = new SaxParser1(inputStream);
parser.parse();
如果发送方在发送后立即将socket关闭掉,接收方就可以得到正确解析的XML数据。但如果发送后socket不立即关闭掉,则上面的解析代码会在递归中不能跳出来(了解SAX解析原理的朋友可能知道),即无法运行到endDocument()这个方法,估计是解析器无法判断inputStream什么时候结束。
希望上面的分析对大家有帮助。
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货