我正在编写一个接收xml文件的servlet,将其提供给另一个类,并向客户端提供一些带有一些注释的html文件。 我正在使用类似的东西获取input-xml:
input = request.getInputStream();
但是这个输入是一个ServletInputStream而另一个类(用于注释)需要一个FileInputStream。
如果我给了XMLEventReader(在另一个类中)ServletInputStream,我得到一个解析错误:
ParseError at [row,col]:[1,1]
Message: Content is not allowed in prolog.
我认为这是因为servletinputstream而不是fileinputstream。
问候 我希望有人能够帮助我:)。
答案 0 :(得分:3)
我认为后一个问题不太可能是因为它是ServletInputStream
。解析器不应该关心数据的来源。
我认为输入流中的数据更有可能是错误的。
如果所有可能,那么当前需要FileInputStream
的课程应该重构为InputStream
...否则您必须将数据写入实际文件首先,这显然不理想。
答案 1 :(得分:0)
您应该从ServletInputStream中读取数据,并将其转储到FileOutputStream中。通过这种方式,您可以查看正在发送的数据,然后使用FileInputStream单独测试该数据,并使用您描述的需要它的类。我的猜测是,现在正在发生同样的事情,因为像上一张海报建议的那样,数据可能是错误的格式。
答案 2 :(得分:0)
好的,我现在有点聪明了:) 问题是:在ServletInputStream的开头(和一行末尾)有一些头信息(如内容类型等)。 是否有削减此信息的智能解决方案?
问候