关于使用 StAX 处理无穷无尽的 xml 文件的问题

Question about using StAX with an endless stream of xml files

我有一台服务器 运行 每秒发送一个 xml 文件(最终需要升级到 800 files/second)。我编写的监听服务器的客户端可以很好地处理第一个文件,但是一旦第一个文件被完全处理并尝试转到第二个文件,我就会收到以下错误:

javax.xml.stream.XMLStreamException: ParseError at [row,col]:[164,6] Message: The processing instruction target matching "[xX][mM][lL]" is not allowed.

我假设这是因为它正在读取下一个 xml 文件 <?xml version="1.0" encoding='null' standalone='no'?> 的开头并导致错误?

正如您假设的那样,此异常是由 XML 声明(序言的一部分)根据 spec 不在文档中的第一个元素之前引起的。根据您用来读取文件的实现方式,您应该重置 reader 或关闭并为每个文件创建新实例。