小编Har*_*son的帖子

从Java NIO通道解析StAX

我试图通过Java NIO通道接收XML事件流.我是NIO和StAX解析的新手,所以我很容易忽略一些东西:)

我的搜索让我进入了几个SAX和StAX实现,但它们似乎都在InputStreams和InputSources上运行 - 而不是NIO通道.我最近的两次尝试是从通道获取InputStream并创建一个PipedInputStream:

// method 1
PipedOutputStream out = new PipedOutputStream();
InputStream in = new PipedInputStream(out);
PrintWriter writer = new PrintWriter(out);

//method 2
InputStream in = channel.socket().getInputStream()
//method 3
IputStream in = Channels.newInputStream(channel);
Run Code Online (Sandbox Code Playgroud)

其次是:

XMLStreamReader xmlStreamReader = XMLInputFactory.newInstance()
        .createXMLStreamReader(in);
//...
Run Code Online (Sandbox Code Playgroud)

当上面的代码与方法1一起使用时,它会在createXMLStreamReader行上阻塞.当使用方法2/3时,它们会立即抛出IllegalBlockingModeException(我明白为什么).也许需要一种新的方法?

我的目标是让一个非阻塞服务器select => accept来自客户端的字符数据=>使用特定的编码将其解析为XML事件=>将该事件对象转发到另一个线程进行处理=>并返回选择.

所以我忽略了一些东西,还是有更好的方法可以使用?如果是这样的话?

谢谢!

java xml stax nio

8
推荐指数
1
解决办法
3705
查看次数

标签 统计

java ×1

nio ×1

stax ×1

xml ×1