我最近想写个聊天工具玩玩,用socket。我想将内容以xml形式发送到另一方。可是遇到一个问题,我在用SAXBuilder.build方法时将socket.getInputStream()传入方法中获取解析到得Document,结果发现流进入这个方法前我的socket还是开得,可这个方法一过socket就被close了,弄得我的程序没办法继续进行。有知道怎么回事的给个说法吧?
[b]问题补充:[/b]
代码如下:
public void readXmlOnStream(InputStream is)
{
SAXBuilder build = new SAXBuilder();
Document doc = null;
try {
//is在这时断点调试还看到socket的isClosed=false
doc = build.build(is);
//在这时就看到socket的isClosed=true了,简直莫名奇妙
} catch (Exception e) {
}
}
还有这个build方法可以直接传xml的字符串进去?
先把你的xml从socket读出来,拼成xml字符串 xmlString,然后用下列方法读取:
SAXBuilder builder = new SAXBuilder();
Document anotherDocument = builder.build(new StringReader(xmlString));
我看了一下api...发现jdom居然没有直接的方法可以读string...囧啊.
我一直都是用dom4j..感觉会比jdom更好
呃.或许你应该用一个方法来从流中读取内容,转换成字符串后返回.然后再传入方法去解析成document.
你可以将代码贴出来..我猜是不是你getInputString()后面用了return 还是什么的导致socket被关闭了..