我有一个外部系统的套接字连接,它接受命令并以XML格式发送结果。每个命令和结果都是一个独立的XML文档。
我应该使用哪种Java解析器(/组合):
答案 0 :(得分:2)
嗯...... XStream.createObjectInputStream似乎就是你所需要的。我不确定提供的流是否必须将所有对象都包含在根节点中,但无论如何,您可以安排一个输入流来添加一些虚拟内容以满足XStream需求。我稍后会扩展这个答案......
http://x-stream.github.io/objectstream.html有一些样本......
根节点
确实,读者需要一个根节点。因此,您需要一个读取<object-stream>
加上实际字节内容的输入流,最后加上</object-stream>
(如果您考虑到这一点)。根据您的需要(输入流,读者),实现可能略有不同,但可以完成。
<强>示例强>
您可以使用SequenceInputStream将虚拟内容连接到原始输入流:
InputStream realOne = ..
// beware of the encoding!
InputStream root = new ByteArrayInputStream("<object-stream>".toBytes("UTF-8"));
InputStream all = new SequenceInputStream(root, realOne);
xstream.createObjectInputStream(withRoot); // voi lá
如果你使用读者......好吧。必须有相同的东西:)
答案 1 :(得分:0)
你最好的选择可能是SAX解析器。有了它,您可以实现ContentHandler
文档,并在endDocument
方法中,进行处理并准备下一个文档。请查看此页面:http://docs.oracle.com/javase/tutorial/jaxp/sax/parsing.html - 有关说明和示例。
答案 2 :(得分:0)
我会说你读了一个完整的完整回复,然后解析它。然后阅读另一个。我认为没有必要继续阅读回复。