weixin_42303163
2009-03-27 19:39
浏览 703
已采纳

关于JDOM解析XMl中的SAXBuilder 中的build方法的问题

我最近想写个聊天工具玩玩,用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的字符串进去?

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • playfish05 2009-03-27 22:11
    已采纳

    先把你的xml从socket读出来,拼成xml字符串 xmlString,然后用下列方法读取:

    SAXBuilder builder = new SAXBuilder();

    Document anotherDocument = builder.build(new StringReader(xmlString));

    我看了一下api...发现jdom居然没有直接的方法可以读string...囧啊.

    我一直都是用dom4j..感觉会比jdom更好

    已采纳该答案
    打赏 评论
  • playfish05 2009-03-27 19:45

    呃.或许你应该用一个方法来从流中读取内容,转换成字符串后返回.然后再传入方法去解析成document.

    你可以将代码贴出来..我猜是不是你getInputString()后面用了return 还是什么的导致socket被关闭了..

    打赏 评论

相关推荐 更多相似问题