Java 为什么我的解组器要等到具有以下start元素时才使用XMLStreamReader返回?
我有一个Python脚本和Java测试并排运行。它们都试图做完全相同的事情——打开一个套接字,接收一个永无止境的XML流,并在接收XML时解析它。Python脚本使用Expat,而Java测试使用XMLStreamReader和解组器 Python脚本总是比Java测试提前一步/对象,例如,当我有足够的XML来解组一个对象时,Python脚本会立即这样做,而Java解组器只开始解组,并等待下一个XML开始标记的开始,然后返回先前解组的对象。如果每隔20秒收到XML对象,Java解组器在收到下一个对象之前不会返回Java 为什么我的解组器要等到具有以下start元素时才使用XMLStreamReader返回?,java,xml,jaxb,stax,Java,Xml,Jaxb,Stax,我有一个Python脚本和Java测试并排运行。它们都试图做完全相同的事情——打开一个套接字,接收一个永无止境的XML流,并在接收XML时解析它。Python脚本使用Expat,而Java测试使用XMLStreamReader和解组器 Python脚本总是比Java测试提前一步/对象,例如,当我有足够的XML来解组一个对象时,Python脚本会立即这样做,而Java解组器只开始解组,并等待下一个XML开始标记的开始,然后返回先前解组的对象。如果每隔20秒收到XML对象,Java解组器在收到下一个
但是,任何XML事件都可以:也许您可以通过在流中插入XML注释来实现一些技巧…解组程序希望将“光标”放置到它已解组的部分的结束元素事件之后的事件。因此,它“挂起”直到有东西可用。从API文档: 此方法假定解析器位于START\u文档或 启动元素事件。将从此开始事件开始执行解组 到相应的结束事件。如果此方法成功返回, 读卡器将在结束事件之后指向令牌
但是,任何XML事件都可以:也许您可以通过在流中插入XML注释来实现一些技巧…可能与Java代码解析XML时引发事件的顺序有关,因为最好的建议是使用源代码!关于查看源代码的观点很好。我试过了,但无论出于什么原因,我所拥有的解组器的实现源在本地都不可用。我将在线查看源代码,您不会说您正在使用哪个JavaXMLStreamReader实现(它是一个接口,而不是一个具体的类)。有些实现不是很好。我经验中最好的是Woodstox。我在问题中添加了XMLStreamReader类型。在测试中,我还将XMLStreamReader更改为XMLEventReader,现在没有遇到此问题。问题仍然存在——问题出在哪里?可能在连接器的最后一个任务“超越结束标记”(staxStreamReader.next()vs.event=staxEventReader.nextEvent())中?可能与Java代码解析XML时引发事件的顺序有关,因为最好的建议是使用源代码!关于查看源代码的观点很好。我试过了,但无论出于什么原因,我所拥有的解组器的实现源在本地都不可用。我将在线查看源代码,您不会说您正在使用哪个JavaXMLStreamReader实现(它是一个接口,而不是一个具体的类)。有些实现不是很好。我经验中最好的是Woodstox。我在问题中添加了XMLStreamReader类型。在测试中,我还将XMLStreamReader更改为XMLEventReader,现在没有遇到此问题。问题仍然存在——问题出在哪里?可能是在连接器的最后一个任务“移动到结束标记之外”(staxStreamReader.next()vs.event=staxEventReader.nextEvent())中?